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; }
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); }
public void AssignManager(HarpoonAttackManager manager) { Manager = manager; }