From 9484c6d2fb308fe534ad7772020cdfe14e08f6d1 Mon Sep 17 00:00:00 2001 From: Jason Durand 01 Date: Sat, 2 Apr 2022 05:55:33 -0400 Subject: [PATCH] Use rigidbodies to move Entities --- Assets/Prefabs/Gladiator.prefab | 55 ++++++++++++++++++++-------- Assets/Prefabs/Monster.prefab | 55 ++++++++++++++++++++-------- Assets/Scripts/Entity.cs | 6 ++- Assets/Scripts/Monster.cs | 3 +- Assets/Scripts/Safe Zone Stats.asset | 28 +++++++++++++- Assets/Scripts/SafeZone.cs | 5 --- 6 files changed, 114 insertions(+), 38 deletions(-) diff --git a/Assets/Prefabs/Gladiator.prefab b/Assets/Prefabs/Gladiator.prefab index f4ab589..5fd83e0 100644 --- a/Assets/Prefabs/Gladiator.prefab +++ b/Assets/Prefabs/Gladiator.prefab @@ -11,8 +11,9 @@ GameObject: - component: {fileID: 197677485360569565} - component: {fileID: 197677485360569564} - component: {fileID: 197677485360569563} - - component: {fileID: 197677485360569562} - component: {fileID: 197677485360569566} + - component: {fileID: 3988163462708087662} + - component: {fileID: 2142155588016984618} m_Layer: 0 m_Name: Gladiator m_TagString: Gladiator @@ -83,19 +84,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!135 &197677485360569562 -SphereCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 197677485360569561} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Radius: 0.5 - m_Center: {x: 0, y: 0, z: 0} --- !u!114 &197677485360569566 MonoBehaviour: m_ObjectHideFlags: 0 @@ -108,7 +96,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: c537e1bd61b8d5c42b1ec03f90e14855, type: 3} m_Name: m_EditorClassIdentifier: - health: 100 + k__BackingField: 0 movementSpeed: 5 rotSpeed: 3 fov: 0 @@ -116,3 +104,40 @@ MonoBehaviour: attackDmg: 10 attackCooldown: 1 target: {fileID: 0} +--- !u!58 &3988163462708087662 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197677485360569561} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 6200000, guid: 72c8b57001d325c418a78771641a077f, type: 2} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.5 +--- !u!50 &2142155588016984618 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 197677485360569561} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 6200000, guid: 72c8b57001d325c418a78771641a077f, type: 2} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 diff --git a/Assets/Prefabs/Monster.prefab b/Assets/Prefabs/Monster.prefab index 8f180fc..a0378dc 100644 --- a/Assets/Prefabs/Monster.prefab +++ b/Assets/Prefabs/Monster.prefab @@ -11,8 +11,9 @@ GameObject: - component: {fileID: 2399377275812995968} - component: {fileID: 2399377275812995969} - component: {fileID: 2399377275812995970} - - component: {fileID: 2399377275812995971} - component: {fileID: 2399377275812995974} + - component: {fileID: 1427479462206541758} + - component: {fileID: 8912459659685944407} m_Layer: 0 m_Name: Monster m_TagString: Monster @@ -83,19 +84,6 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} ---- !u!65 &2399377275812995971 -BoxCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 2399377275812995980} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 2 - m_Size: {x: 1, y: 1, z: 1} - m_Center: {x: 0, y: 0, z: 0} --- !u!114 &2399377275812995974 MonoBehaviour: m_ObjectHideFlags: 0 @@ -108,7 +96,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7e480b0ef5998894283e8091830941cb, type: 3} m_Name: m_EditorClassIdentifier: - health: 100 + k__BackingField: 0 movementSpeed: 5 rotSpeed: 3 fov: 0 @@ -116,3 +104,40 @@ MonoBehaviour: attackDmg: 10 attackCooldown: 1 target: {fileID: 0} +--- !u!50 &1427479462206541758 +Rigidbody2D: + serializedVersion: 4 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2399377275812995980} + m_BodyType: 0 + m_Simulated: 1 + m_UseFullKinematicContacts: 0 + m_UseAutoMass: 0 + m_Mass: 1 + m_LinearDrag: 0 + m_AngularDrag: 0.05 + m_GravityScale: 0 + m_Material: {fileID: 6200000, guid: 72c8b57001d325c418a78771641a077f, type: 2} + m_Interpolate: 0 + m_SleepingMode: 1 + m_CollisionDetection: 0 + m_Constraints: 4 +--- !u!58 &8912459659685944407 +CircleCollider2D: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2399377275812995980} + m_Enabled: 1 + m_Density: 1 + m_Material: {fileID: 6200000, guid: 72c8b57001d325c418a78771641a077f, type: 2} + m_IsTrigger: 0 + m_UsedByEffector: 0 + m_UsedByComposite: 0 + m_Offset: {x: 0, y: 0} + serializedVersion: 2 + m_Radius: 0.5 diff --git a/Assets/Scripts/Entity.cs b/Assets/Scripts/Entity.cs index cc4f38a..bd6ea0d 100644 --- a/Assets/Scripts/Entity.cs +++ b/Assets/Scripts/Entity.cs @@ -2,6 +2,7 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +[RequireComponent(typeof(Rigidbody2D))] public class Entity : MonoBehaviour { [field: SerializeField]protected float Health { get; private set; } @@ -16,6 +17,9 @@ public class Entity : MonoBehaviour private new string name; private Collider atkCollider; private Vector3 direction; + Rigidbody2D rb; + + void Awake() => rb = GetComponent(); protected virtual void Start() { direction = new Vector3(1,0,0); @@ -36,7 +40,7 @@ public class Entity : MonoBehaviour direction = Vector3.RotateTowards(direction, (target.position - transform.position), rotSpeed*deltaTime, 0.0f); if(!IsInAttackRange()){ - transform.Translate(direction * movementSpeed* deltaTime); + rb.MovePosition(transform.position + direction * movementSpeed * deltaTime); } } diff --git a/Assets/Scripts/Monster.cs b/Assets/Scripts/Monster.cs index bd45cf7..77bd059 100644 --- a/Assets/Scripts/Monster.cs +++ b/Assets/Scripts/Monster.cs @@ -11,10 +11,11 @@ public class Monster : Entity base.SetName("Monster"); } + void FixedUpdate() => MoveToTarget(Time.fixedDeltaTime); + // Update is called once per frame void Update() { - MoveToTarget(Time.deltaTime); if(IsInAttackRange()){ if(attackTimer >= attackCooldown){ Attack(); diff --git a/Assets/Scripts/Safe Zone Stats.asset b/Assets/Scripts/Safe Zone Stats.asset index 100c135..d957eda 100644 --- a/Assets/Scripts/Safe Zone Stats.asset +++ b/Assets/Scripts/Safe Zone Stats.asset @@ -12,4 +12,30 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 7bb5b9d39d784569a22f3cf10d19c27b, type: 3} m_Name: Safe Zone Stats m_EditorClassIdentifier: - jumpDuration: 1.2 + k__BackingField: 1.2 + k__BackingField: 0.5 + k__BackingField: 1 + k__BackingField: + serializedVersion: 2 + m_Curve: + - serializedVersion: 3 + time: 0 + value: 0 + inSlope: 2.0288262 + outSlope: 2.0288262 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.33333334 + outWeight: 0.05696202 + - serializedVersion: 3 + time: 1 + value: 1 + inSlope: 0.4757123 + outSlope: 0.4757123 + tangentMode: 0 + weightedMode: 0 + inWeight: 0.05949372 + outWeight: 0 + m_PreInfinity: 2 + m_PostInfinity: 2 + m_RotationOrder: 4 diff --git a/Assets/Scripts/SafeZone.cs b/Assets/Scripts/SafeZone.cs index 7698380..bde3c07 100644 --- a/Assets/Scripts/SafeZone.cs +++ b/Assets/Scripts/SafeZone.cs @@ -5,11 +5,6 @@ public class SafeZone : MonoBehaviour { [SerializeField] CircleCollider2D moatCollider; public bool IsInSafeZone { get; private set; } = true; - void Awake() { - if (moatCollider.enabled) - Debug.LogWarning("Moat collider was enabled on start, shouldn't be if the player starts in the safe zone."); - } - public void EnterSafeZone() { IsInSafeZone = true; }