diff --git a/Assets/Prefabs/Enemy.prefab b/Assets/Prefabs/Enemy.prefab index 396e296..534ae52 100644 --- a/Assets/Prefabs/Enemy.prefab +++ b/Assets/Prefabs/Enemy.prefab @@ -113,8 +113,8 @@ Rigidbody2D: m_UseFullKinematicContacts: 0 m_UseAutoMass: 0 m_Mass: 1 - m_LinearDrag: 0 - m_AngularDrag: 0 + m_LinearDrag: 0.1 + m_AngularDrag: 0.01 m_GravityScale: 0 m_Material: {fileID: 0} m_Interpolate: 1 @@ -157,10 +157,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 582bfd99a32c0ea45a7d09ef4f308d88, type: 3} m_Name: m_EditorClassIdentifier: - victim: {fileID: 0} - agressor: {fileID: 1971451785855062} - speed: 0.2 - rotaionSpeedWIP: 1 + speed: 0.7 + rotationSpeed: 1 --- !u!212 &212571453617041228 SpriteRenderer: m_ObjectHideFlags: 1 diff --git a/Assets/Scripts/EnemyAI.cs b/Assets/Scripts/EnemyAI.cs index eab6132..77f3ec8 100644 --- a/Assets/Scripts/EnemyAI.cs +++ b/Assets/Scripts/EnemyAI.cs @@ -4,36 +4,41 @@ using UnityEngine; public class EnemyAI : MonoBehaviour { - [SerializeField] - private GameObject victim; - [SerializeField] - private GameObject agressor; - [SerializeField] - private float speed = 1; - [SerializeField] - private float rotaionSpeedWIP = 1; + private GameObject victim; + Rigidbody2D body; + [SerializeField] + private float speed = 1; + [SerializeField] + private float rotationSpeed = 1; - /* + /* * Die destructive dumme deutsche Dungeon Diktator Drifter DLC Debakel Distribution Dokumentations - Druck Datei - * */ + */ - // Use this for initialization - void Start() { + // Use this for initialization + void Start () { + victim = null; + body = gameObject.GetComponent(); + } - } - - // Update is called once per frame - void Update() { - if ( victim == null ) { - //victim = GameController.instance.GetPlayer().gameObject; // TODO testing purpose only! + // Update is called once per frame + void Update () + { + if(victim == null) { + victim = GameController.instance.GetPlayer().gameObject; // TODO testing purpose only! return; } - // movement - agressor.transform.Translate(Vector3.Scale(( victim.transform.position - agressor.transform.position ).normalized, new Vector2(speed, speed))); - // rotation - agressor.transform.Rotate(agressor.transform.forward, Vector3.Angle(victim.transform.position - agressor.transform.position, agressor.transform.rotation * new Vector3(1, 1, 1))); - } + Vector3 distanceToEnemy = victim.transform.position - gameObject.transform.position; + + // movement + body.velocity = new Vector2(distanceToEnemy.normalized.x, distanceToEnemy.normalized.y) * speed; + + //rotation + Vector3 localRotation = gameObject.transform.localRotation * Vector3.up; + float angleToRotate = Mathf.Round(Vector3.SignedAngle(localRotation, distanceToEnemy.normalized, Vector3.forward)); + gameObject.transform.Rotate(0, 0, angleToRotate * rotationSpeed); + } public void SetVictim(GameObject g) { victim = g;