public void Initialize(HarpoonAttackManager manager, Spaceship attacker, Vector2 position, Vector2 direction, Vector2 initialVelocity, float speed, float range, float duration)
    {
        Manager  = manager;
        Attacker = attacker;
        Speed    = speed;
        Range    = range;
        Duration = duration;

        float angle = Vector2.SignedAngle(Vector2.right, direction);

        Hook = Instantiate(GeneralPrefabs.Instance.HarpoonHook, position + (MINIMUM_DISTANCE_JOINT_LENGTH * direction.normalized), Quaternion.Euler(0, 0, angle));
        Hook.transform.SetParent(transform);
        HookVelocity = Speed * direction.normalized + initialVelocity;
        Hook.GetComponent <Rigidbody2D>().velocity = HookVelocity;
        Hook.GetComponent <HarpoonHookController>().AssignManager(manager);
        RootLink = Hook;

        TotalDistanceJoint = Attacker.gameObject.AddComponent <DistanceJoint2D>();
        TotalDistanceJoint.connectedBody = Hook.GetComponent <Rigidbody2D>();
        TotalDistanceJoint.autoConfigureConnectedAnchor = false;
        TotalDistanceJoint.anchor                = Vector2.zero;
        TotalDistanceJoint.connectedAnchor       = Hook.GetComponent <HarpoonLinkData>().ConnectedAnchorOffset;
        TotalDistanceJoint.autoConfigureDistance = false;
        TotalDistanceJoint.distance              = MINIMUM_DISTANCE_JOINT_LENGTH;
        TotalDistanceJoint.maxDistanceOnly       = true;

        RootDistanceJoint = Attacker.gameObject.AddComponent <DistanceJoint2D>();
        RootDistanceJoint.connectedBody = Hook.GetComponent <Rigidbody2D>();
        RootDistanceJoint.autoConfigureConnectedAnchor = false;
        RootDistanceJoint.connectedAnchor       = Hook.GetComponent <HarpoonLinkData>().ConnectedAnchorOffset;
        RootDistanceJoint.autoConfigureDistance = false;
        RootDistanceJoint.distance        = MINIMUM_DISTANCE_JOINT_LENGTH;
        RootDistanceJoint.maxDistanceOnly = true;

        RootLinkIsVertical = false;
    }
Exemple #2
0
 public override void ExecuteAttack(Spaceship attacker, bool hasTarget, int targetUID, Vector2 position, Vector2 direction, Vector2 initialVelocity)
 {
     AttackManager = new HarpoonAttackManager(attacker, position, direction, initialVelocity, Damage, Speed, Range, Duration);
 }
Exemple #3
0
 public void AssignManager(HarpoonAttackManager manager)
 {
     Manager = manager;
 }