diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index 186935e..c92154d 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -135,7 +135,7 @@ GameObject: - component: {fileID: 438337} - component: {fileID: 438340} - component: {fileID: 438339} - m_Layer: 0 + m_Layer: 6 m_Name: Line m_TagString: Untagged m_Icon: {fileID: 0} @@ -609,7 +609,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &947231828 MonoBehaviour: m_ObjectHideFlags: 0 @@ -622,7 +622,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a515e7c6c1edfdd44a449609cf5191e2, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 0.01 + moveSpeed: 0.03 + canSeePlayer: 1 + distanceThreshold: 0.2 + dodgeTime: 0.5 + linecastLayer: + serializedVersion: 2 + m_Bits: 64 --- !u!212 &947231829 SpriteRenderer: m_ObjectHideFlags: 0 @@ -774,7 +780,7 @@ GameObject: - component: {fileID: 1223984568} - component: {fileID: 1223984567} - component: {fileID: 1223984569} - m_Layer: 0 + m_Layer: 6 m_Name: Square m_TagString: Untagged m_Icon: {fileID: 0} @@ -1011,7 +1017,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!114 &1919562619 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1024,7 +1030,13 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a515e7c6c1edfdd44a449609cf5191e2, type: 3} m_Name: m_EditorClassIdentifier: - moveSpeed: 0.01 + moveSpeed: 0.03 + canSeePlayer: 1 + distanceThreshold: 0.2 + dodgeTime: 0.5 + linecastLayer: + serializedVersion: 2 + m_Bits: 64 --- !u!212 &1919562620 SpriteRenderer: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Drawer.cs b/Assets/Scripts/Drawer.cs index 736c20f..7cc46a5 100644 --- a/Assets/Scripts/Drawer.cs +++ b/Assets/Scripts/Drawer.cs @@ -67,7 +67,7 @@ public class Drawer : MonoBehaviour } for(int i= points.Count-1; i >0; i--) { - points3.Add(points[i] + new Vector3(0,0.1f,0)); + points3.Add(points[i] + new Vector3(0.05f,0.1f,0)); } //edgeCollider2D.SetPoints(points3); edgeCollider2D.SetPath(0, points3); diff --git a/Assets/Scripts/Enemy.cs b/Assets/Scripts/Enemy.cs index a3bd21f..be96879 100644 --- a/Assets/Scripts/Enemy.cs +++ b/Assets/Scripts/Enemy.cs @@ -5,10 +5,55 @@ using UnityEngine; public class Enemy : MonoBehaviour { public float moveSpeed = 0.1f; + public bool canSeePlayer = false; + public float distanceThreshold = 0.1f; + public float dodgeTime = 0.2f; + float dodgeTimer = 0; + public LayerMask linecastLayer; + private void Awake() + { + dodgeTimer = dodgeTime; + } + + + Color debugColor = Color.white; void FixedUpdate() { if (GameManager.Player == null) { return; } + RaycastHit2D hit = Physics2D.Linecast(transform.position, GameManager.Player.position, linecastLayer); + if (hit.collider == null) { + canSeePlayer = true; + } else if (hit.collider.transform == GameManager.Player.transform) + { + canSeePlayer = true; + } + else + { + canSeePlayer = false; + float distanceToBarrier = Vector2.Distance(transform.position, hit.point); + if (distanceToBarrier < distanceThreshold) + { + dodgeTimer = 0; + } + Debug.DrawLine(transform.position, hit.point, debugColor); + } + + Vector3 direction = (GameManager.Player.position - new Vector3(0,0.5f,0) - transform.position).normalized; + + if (dodgeTimer < dodgeTime) + { + dodgeTimer += Time.deltaTime; + + if (dodgeTimer > dodgeTime/100f) + { + debugColor = Color.red; + transform.Translate(new Vector3(-direction.x, direction.y) * moveSpeed * 1.2f); + return; + } + } + + transform.Translate(direction * moveSpeed); + debugColor = Color.white; - transform.Translate((GameManager.Player.position - transform.position).normalized * moveSpeed); } } diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 1c92a78..16ec318 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -11,7 +11,7 @@ TagManager: - - Water - UI - - + - Obstacles - - -