diff options
Diffstat (limited to 'GameCode/PlayerAIMinion.cs')
-rw-r--r-- | GameCode/PlayerAIMinion.cs | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/GameCode/PlayerAIMinion.cs b/GameCode/PlayerAIMinion.cs new file mode 100644 index 0000000..8aea87b --- /dev/null +++ b/GameCode/PlayerAIMinion.cs @@ -0,0 +1,63 @@ +using UnityEngine; + +public class PlayerAIMinion : MonoBehaviour +{ + public AnimationCurve m_AimCompensastionCurve; + + public float range = 5f; + + private PlayerAPI api; + + private Vector2 moveDirection; + + private void Start() + { + api = GetComponentInParent<PlayerAPI>(); + moveDirection = api.data.master.data.aimDirection; + if (moveDirection.x > 0.5f) + { + moveDirection.x = 1f; + } + else if (moveDirection.x < -0.5f) + { + moveDirection.x = -1f; + } + else + { + moveDirection.x = 0f; + } + moveDirection.y = 0f; + base.transform.root.gameObject.AddComponent<RemoveAfterSeconds>().seconds = 4f; + } + + private void Update() + { + Player otherPlayer = PlayerManager.instance.GetOtherPlayer(api.data.master); + api.Move(moveDirection); + if (api.data.isWallGrab) + { + api.Jump(); + } + if (!api.data.isGrounded) + { + api.Jump(); + } + if ((bool)otherPlayer) + { + api.SetAimDirection(GetAimDirForHitting(otherPlayer.transform.position)); + if (PlayerManager.instance.CanSeePlayer(base.transform.position, otherPlayer).canSee && Vector2.Distance(base.transform.position, otherPlayer.transform.position) < range) + { + api.Attack(); + } + } + } + + private Vector2 GetAimDirForHitting(Vector3 point) + { + Vector3 vector = point - base.transform.position; + api.SetAimDirection(vector); + api.GetMyBullet(); + float time = Mathf.Abs(point.x - base.transform.position.x); + return point + Vector3.up * m_AimCompensastionCurve.Evaluate(time) - base.transform.position; + } +} |