]> git.cameronkatri.com Git - gmtk-gamejam.git/commitdiff
Refine enemy locomotion
authorCarson Katri <carson.katri@gmail.com>
Sat, 12 Jun 2021 21:31:33 +0000 (17:31 -0400)
committerCarson Katri <carson.katri@gmail.com>
Sat, 12 Jun 2021 21:31:33 +0000 (17:31 -0400)
Assets/Prefabs/Enemy.prefab
Assets/Scenes/Main.unity
Assets/Scripts/Controllers/AIController.cs
Assets/Scripts/Controllers/GameController.cs
Assets/Scripts/Controllers/Player/PlayerController.cs
ProjectSettings/Physics2DSettings.asset
ProjectSettings/TagManager.asset

index 6344eab2abf0228422dcb5daee2ec7376585d37c..14429da833a48aa27a0ba1ab27a9df6d35e3b324 100644 (file)
@@ -10,7 +10,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067998564477638}
   - component: {fileID: 7079067998564477637}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Leg.Right.Top
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -93,7 +93,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067998874270570}
   - component: {fileID: 7079067998874270569}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Arm.Left
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -175,7 +175,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067998927418495}
   - component: {fileID: 7079067998927418494}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Leg.Left.Bottom
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -257,7 +257,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067998994176362}
   - component: {fileID: 7079067998994176361}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Left.Left.Top
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -342,7 +342,7 @@ GameObject:
   - component: {fileID: 670472073231852718}
   - component: {fileID: 391441287063834562}
   - component: {fileID: 2915148967131225220}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Enemy
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -391,6 +391,7 @@ MonoBehaviour:
   maxLegAngle: 30
   legSpeed: 20
   game: {fileID: 0}
+  player: {fileID: 0}
 --- !u!50 &391441287063834562
 Rigidbody2D:
   serializedVersion: 4
@@ -448,7 +449,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067999404952341}
   - component: {fileID: 7079067999404952340}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Arm.Right
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -530,7 +531,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079067999656997561}
   - component: {fileID: 7079067999656997560}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Head
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -612,7 +613,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079068000117515304}
   - component: {fileID: 7079068000117515303}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Body
   m_TagString: Untagged
   m_Icon: {fileID: 0}
@@ -694,7 +695,7 @@ GameObject:
   m_Component:
   - component: {fileID: 7079068000273710487}
   - component: {fileID: 7079068000273710486}
-  m_Layer: 6
+  m_Layer: 8
   m_Name: Leg.Right.Bottom
   m_TagString: Untagged
   m_Icon: {fileID: 0}
index 0871fd5f8d8d79d9085eea7fec43d5f1006df0f0..769348d31e12ba20b956b3695f15a5c24ef5479b 100644 (file)
@@ -152,6 +152,7 @@ Transform:
   m_Children:
   - {fileID: 1174357919}
   - {fileID: 1189511746}
+  - {fileID: 961513381}
   m_Father: {fileID: 0}
   m_RootOrder: 2
   m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
@@ -366,7 +367,7 @@ PrefabInstance:
       objectReference: {fileID: 0}
     - target: {fileID: 6267610020350316690, guid: 2485406c33a7d4f5481ce936cc9b162e, type: 3}
       propertyPath: shotForce
-      value: 1000
+      value: 500
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: 2485406c33a7d4f5481ce936cc9b162e, type: 3}
@@ -381,6 +382,80 @@ MonoBehaviour:
   m_Script: {fileID: 11500000, guid: 71c18c0662ec4384bf64aae1dc016093, type: 3}
   m_Name: 
   m_EditorClassIdentifier: 
+--- !u!1001 &961513380
+PrefabInstance:
+  m_ObjectHideFlags: 0
+  serializedVersion: 2
+  m_Modification:
+    m_TransformParent: {fileID: 244382786}
+    m_Modifications:
+    - target: {fileID: 670472073231852718, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: game
+      value: 
+      objectReference: {fileID: 1174357920}
+    - target: {fileID: 670472073231852718, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: player
+      value: 
+      objectReference: {fileID: 984947993}
+    - target: {fileID: 670472073231852718, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: legSpeed
+      value: 5
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_RootOrder
+      value: 2
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalPosition.x
+      value: 1.651358
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalPosition.y
+      value: -2.7138848
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalPosition.z
+      value: 134.58575
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalRotation.w
+      value: 1
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalRotation.x
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalRotation.y
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalRotation.z
+      value: -0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.x
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.y
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_LocalEulerAnglesHint.z
+      value: 0
+      objectReference: {fileID: 0}
+    - target: {fileID: 7079067999241254397, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+      propertyPath: m_Name
+      value: Enemy
+      objectReference: {fileID: 0}
+    m_RemovedComponents: []
+  m_SourcePrefab: {fileID: 100100000, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+--- !u!4 &961513381 stripped
+Transform:
+  m_CorrespondingSourceObject: {fileID: 7079067999241254396, guid: d9b5414ac39834728992e2585c5ad778, type: 3}
+  m_PrefabInstance: {fileID: 961513380}
+  m_PrefabAsset: {fileID: 0}
 --- !u!1001 &984947992
 PrefabInstance:
   m_ObjectHideFlags: 0
@@ -458,6 +533,17 @@ PrefabInstance:
       objectReference: {fileID: 0}
     m_RemovedComponents: []
   m_SourcePrefab: {fileID: 100100000, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+--- !u!114 &984947993 stripped
+MonoBehaviour:
+  m_CorrespondingSourceObject: {fileID: 6095859834264611326, guid: c64ad9b908cb44602b3d13a74aef751f, type: 3}
+  m_PrefabInstance: {fileID: 984947992}
+  m_PrefabAsset: {fileID: 0}
+  m_GameObject: {fileID: 0}
+  m_Enabled: 1
+  m_EditorHideFlags: 0
+  m_Script: {fileID: 11500000, guid: 261cc3206075846ebbd03b8896e7c733, type: 3}
+  m_Name: 
+  m_EditorClassIdentifier: 
 --- !u!4 &1116995016 stripped
 Transform:
   m_CorrespondingSourceObject: {fileID: 2106494524751008833, guid: b2939f2eae52d074b81e81fccdde88f9, type: 3}
index 1b7fba8667a1fda1dece138cbebfd5a93c7d6cbf..0edffb7f82a8f178a9caff89ac290bd22a122742 100644 (file)
@@ -23,6 +23,8 @@ namespace Controllers
 
     public Rigidbody2D Rigidbody => _rigidbody != null ? _rigidbody : _rigidbody = GetComponent<Rigidbody2D>();
     private Rigidbody2D _rigidbody;
+
+    private float animationStep;
     
     public BoxCollider2D BoxCollider => _boxCollider != null ? _boxCollider : _boxCollider = GetComponent<BoxCollider2D>();
     private BoxCollider2D _boxCollider;
@@ -36,7 +38,7 @@ namespace Controllers
     private void GrabBall()
     {
       // Grab from the middle, and the bottom.
-      if (game.player.HasBall && Random.Range(0, 100) > 95) // 5% chance of them grabbing the ball from the player.
+      if (!game.player.HasBall || Random.Range(0, 100) > 70) // 30% chance of them grabbing the ball from the player.
       {
         game.enemy.GrabBall(transform.position);
         game.enemy.GrabBall(transform.position + new Vector3(0f, BoxCollider.size.y / 2, 0f));
@@ -45,41 +47,35 @@ namespace Controllers
 
     private void Update()
     {
+      var movement = transform.position;
+      
       if (!game.enemy.HasBall) // Move towards the ball to grab it.
       {
-        transform.position += new Vector3(game.ball.transform.position.x - transform.position.x, 0f, 0f).normalized * (Time.deltaTime * speed);
-        
-        if (Vector2.Distance(player.transform.position, transform.position) < 1f) // Repel from the player if they get too close.
+        if (Vector2.Distance(player.root.transform.position, transform.position) < 2f) // Repel from the player if they get too close.
+        {
+          // transform.position += new Vector3(-(player.transform.position - transform.position).normalized.x, 0, 0) * (Time.deltaTime * speed / 2f);
+          transform.position = new Vector2(Vector2.MoveTowards(transform.position, player.root.transform.position, -1.5f * speed * Time.deltaTime).x, transform.position.y);
+        }
+        else
         {
-          transform.position += (player.transform.position - transform.position).normalized * (Time.deltaTime * speed / 2f);
+          // transform.position += new Vector3(game.ball.transform.position.x - transform.position.x, 0f, 0f).normalized * (Time.deltaTime * speed);
+          transform.position = new Vector2(Vector2.MoveTowards(transform.position, game.ball.transform.position, speed * Time.deltaTime).x, transform.position.y);
         }
       }
       else // Otherwise, move toward the basket, and then once we get within range, take the shot.
       {
       }
 
+      movement -= transform.position;
+
       game.enemy.Move(transform.position + new Vector3(0f, BoxCollider.size.y / 2, 0f));
       
-      leftLeg.top.transform.localRotation = Quaternion.Slerp(
-        leftLeg.top.transform.localRotation,
-        Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(Time.time * legSpeed * (Rigidbody.velocity.magnitude / 5f))),
-        Time.deltaTime * 50f
-      );
-      leftLeg.bottom.transform.localRotation = Quaternion.Slerp(
-        leftLeg.bottom.transform.localRotation,
-        Quaternion.Euler(0, 0, maxLegAngle + maxLegAngle * Mathf.Sin(Time.time * legSpeed * (Rigidbody.velocity.magnitude / 5f))),
-        Time.deltaTime * 50f
-      );
-      rightLeg.top.transform.localRotation = Quaternion.Slerp(
-        rightLeg.top.transform.localRotation,
-        Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(Time.time * -legSpeed * (Rigidbody.velocity.magnitude / 5f))),
-        Time.deltaTime * 50f
-      );
-      rightLeg.bottom.transform.localRotation = Quaternion.Slerp(
-        rightLeg.bottom.transform.localRotation,
-        Quaternion.Euler(0, 0, maxLegAngle + maxLegAngle * Mathf.Sin(Time.time * -legSpeed * (Rigidbody.velocity.magnitude / 5f))),
-        Time.deltaTime * 50f
-      );
+      leftLeg.top.transform.localRotation = Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(animationStep * legSpeed));
+      leftLeg.bottom.transform.localRotation = Quaternion.Euler(0, 0, maxLegAngle + maxLegAngle * Mathf.Sin(animationStep * legSpeed));
+      rightLeg.top.transform.localRotation = Quaternion.Euler(0, 0, maxLegAngle * Mathf.Sin(animationStep * -legSpeed));
+      rightLeg.bottom.transform.localRotation = Quaternion.Euler(0, 0, maxLegAngle + maxLegAngle * Mathf.Sin(animationStep * -legSpeed));
+
+      animationStep += Time.deltaTime * Mathf.Abs(movement.x);
     }
 
     [Serializable]
index b9f65f2d60ef07f2a1e95d19ef4aae117534299c..646b750e55090a703102a2d4ae615971012cf3f4 100644 (file)
@@ -43,14 +43,18 @@ namespace Controllers
       internal int score;
 
       private Vector2 lastShotPosition;
-      public void Score(Vector2 Rim) {
+      public void Score(Vector2 Rim)
+      {
         if (Vector2.Distance(lastShotPosition, Rim) >= 1)
         {
           score += 3;
           Debug.Log("Three point");
-        } else
+        }
+        else
+        {
           score += 2;
           Debug.Log("Two point");
+        }
       }
 
       private State dribble => isEnemy ? State.EnemyDribble : State.PlayerDribble;
@@ -76,7 +80,7 @@ namespace Controllers
       public bool GrabBall(Vector2 handPosition)
       { 
         // Don't allow the ball to be picked up if someone shot it. Also don't try picking it up if we're already holding it.
-        if (controller.state.IsShot() || controller.state == dribble) return false;
+        //if (controller.state.IsShot() || controller.state == dribble) return false;
         
         // Make sure its within their grab area.
         if (Vector2.Distance(controller.ball.transform.position, handPosition) > 0.75f) return false;
index e67358c6854b7650d76ffcdbf52b13559b3db11f..6436235949a9e0f09032360d57b3ae841aeda48b 100644 (file)
@@ -18,6 +18,8 @@ namespace Controllers.Player
     [SerializeField] private float maxLegAngle;
     [SerializeField] private float legSpeed;
 
+    public PlayerSegment root => segments[0];
+
     private void Awake()
     {
       foreach (var segment in segments) {
index e6f20a937181ea9287f4b4717a396df1b68868fe..4cfea2797eba7a41f3e0f50dbd812fa387183a02 100644 (file)
@@ -53,4 +53,4 @@ Physics2DSettings:
   m_ColliderAsleepColor: {r: 0.5686275, g: 0.95686275, b: 0.54509807, a: 0.36078432}
   m_ColliderContactColor: {r: 1, g: 0, b: 1, a: 0.6862745}
   m_ColliderAABBColor: {r: 1, g: 1, b: 0, a: 0.2509804}
-  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffff7fffffffbfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
+  m_LayerCollisionMatrix: ffffffffffffffffffffffffffffffffffffffffffffffff7ffeffffbffeffff3fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
index 9793b2907b7409c2efed9d2e39bfc0e9e78b6a8c..3040a17b26074df824c7e74e79734276e1ea30d9 100644 (file)
@@ -13,7 +13,7 @@ TagManager:
   - UI
   - Player
   - Ball
-  - 
+  - Enemy
   - 
   - 
   -