diff --git a/Assets/Prefabs/Game/Player.prefab b/Assets/Prefabs/Game/Player.prefab index 32f6915..0618a02 100644 --- a/Assets/Prefabs/Game/Player.prefab +++ b/Assets/Prefabs/Game/Player.prefab @@ -932,7 +932,7 @@ CharacterController: m_SlopeLimit: 45 m_StepOffset: 0.3 m_SkinWidth: 0.08 - m_MinMoveDistance: 0.001 + m_MinMoveDistance: 0.0001 m_Center: {x: 0, y: 0, z: 0} --- !u!54 &8985924327125149956 Rigidbody: @@ -942,7 +942,7 @@ Rigidbody: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9016311960615966999} serializedVersion: 4 - m_Mass: 1 + m_Mass: 100 m_Drag: 0 m_AngularDrag: 0.05 m_CenterOfMass: {x: 0, y: 0, z: 0} @@ -959,7 +959,7 @@ Rigidbody: m_UseGravity: 0 m_IsKinematic: 0 m_Interpolate: 0 - m_Constraints: 80 + m_Constraints: 10 m_CollisionDetection: 0 --- !u!114 &3824427059318413399 MonoBehaviour: diff --git a/Assets/Scenes/Level1.unity b/Assets/Scenes/Level1.unity index 61e5524..22d3abb 100644 --- a/Assets/Scenes/Level1.unity +++ b/Assets/Scenes/Level1.unity @@ -641,6 +641,11 @@ PrefabInstance: m_AddedGameObjects: [] m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 53e225dcb536a6f46b5844bb8db07fe4, type: 3} +--- !u!1 &914314127 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + m_PrefabInstance: {fileID: 1465524055576149525} + m_PrefabAsset: {fileID: 0} --- !u!4 &963998287 stripped Transform: m_CorrespondingSourceObject: {fileID: 3465613687167644384, guid: 0a6d9f24857a5d742b9df2df7da4a192, type: 3} @@ -926,6 +931,21 @@ Transform: m_CorrespondingSourceObject: {fileID: 4458204531961996595, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} m_PrefabInstance: {fileID: 1465524055576149525} m_PrefabAsset: {fileID: 0} +--- !u!114 &1482790149 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 914314127} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb7839678d2d2f7429a6dbd22c7efb93, type: 3} + m_Name: + m_EditorClassIdentifier: + hitRate: 1 + damage: 5 + currentDelay: 0 --- !u!4 &1507655617 stripped Transform: m_CorrespondingSourceObject: {fileID: 6025933111829980118, guid: ca28c894d7e3a8e4d8feb70b9a8bb1c4, type: 3} @@ -1503,7 +1523,10 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + insertIndex: -1 + addedObject: {fileID: 1482790149} m_SourcePrefab: {fileID: 100100000, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} --- !u!1001 &1815240206413736077 PrefabInstance: diff --git a/Assets/Scenes/Level2.unity b/Assets/Scenes/Level2.unity index d1e09f4..da072a4 100644 --- a/Assets/Scenes/Level2.unity +++ b/Assets/Scenes/Level2.unity @@ -1294,8 +1294,31 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + insertIndex: -1 + addedObject: {fileID: 1465524055576149527} m_SourcePrefab: {fileID: 100100000, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} +--- !u!1 &1465524055576149526 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + m_PrefabInstance: {fileID: 1465524055576149525} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1465524055576149527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1465524055576149526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb7839678d2d2f7429a6dbd22c7efb93, type: 3} + m_Name: + m_EditorClassIdentifier: + hitRate: 1 + damage: 5 + currentDelay: 0 --- !u!1001 &1815240206413736077 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/Level3.unity b/Assets/Scenes/Level3.unity index 270d4af..973d2dc 100644 --- a/Assets/Scenes/Level3.unity +++ b/Assets/Scenes/Level3.unity @@ -1903,8 +1903,31 @@ PrefabInstance: m_RemovedComponents: [] m_RemovedGameObjects: [] m_AddedGameObjects: [] - m_AddedComponents: [] + m_AddedComponents: + - targetCorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + insertIndex: -1 + addedObject: {fileID: 1465524055576149527} m_SourcePrefab: {fileID: 100100000, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} +--- !u!1 &1465524055576149526 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 3933166166638460809, guid: cb78e85aa373c3a4498d453f91e6f5e0, type: 3} + m_PrefabInstance: {fileID: 1465524055576149525} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1465524055576149527 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1465524055576149526} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fb7839678d2d2f7429a6dbd22c7efb93, type: 3} + m_Name: + m_EditorClassIdentifier: + hitRate: 1 + damage: 5 + currentDelay: 0 --- !u!1001 &1815240206413736077 PrefabInstance: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Enemies/DamagingObject.cs b/Assets/Scripts/Enemies/DamagingObject.cs new file mode 100644 index 0000000..09f154f --- /dev/null +++ b/Assets/Scripts/Enemies/DamagingObject.cs @@ -0,0 +1,25 @@ +using UnityEngine; + +public class DamagingObject : MonoBehaviour +{ + public float hitRate = 1f; + public float damage = 5f; + + [SerializeField] float currentDelay = 0; + + void Start() { + if (hitRate != 0) currentDelay = 1 / hitRate; + } + + void Update() { + if (hitRate != 0) currentDelay = Mathf.Clamp(currentDelay += Time.deltaTime, 0, 1 / hitRate); + } + + public void ReverseOnControllerColliderHit(ControllerColliderHit hit) { + if (hit.controller.CompareTag("Player") && currentDelay == 1 / hitRate) { + Player player = hit.controller.GetComponent(); + player.DealDamage(damage); + currentDelay = 0; + } + } +} diff --git a/Assets/Scripts/Enemies/DamagingObject.cs.meta b/Assets/Scripts/Enemies/DamagingObject.cs.meta new file mode 100644 index 0000000..3307760 --- /dev/null +++ b/Assets/Scripts/Enemies/DamagingObject.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: fb7839678d2d2f7429a6dbd22c7efb93 \ No newline at end of file diff --git a/Assets/Scripts/Game/GameController.cs b/Assets/Scripts/Game/GameController.cs index 36166fc..7869d08 100644 --- a/Assets/Scripts/Game/GameController.cs +++ b/Assets/Scripts/Game/GameController.cs @@ -13,7 +13,7 @@ public class GameController : MonoBehaviour public List enemies; public Dictionary inventory = new(); - public void Start() { + public void Awake() { if (i) { Destroy(gameObject); return; } i = GetComponent(); DontDestroyOnLoad(gameObject); diff --git a/Assets/Scripts/Player/PlayerMovement.cs b/Assets/Scripts/Player/PlayerMovement.cs index a7e492e..192bd6c 100644 --- a/Assets/Scripts/Player/PlayerMovement.cs +++ b/Assets/Scripts/Player/PlayerMovement.cs @@ -31,10 +31,13 @@ public class PlayerMovement : MonoBehaviour HandleJumping(); HandleMovement(); HandleDashing(); - DoGravity(); HandleConstantVelocity(); } + void FixedUpdate() { + DoGravity(); + } + void HandleJumping() { if (movementInactive > 0) return; if (Input.GetKey(KeyCode.Space) && grounded) { @@ -70,12 +73,12 @@ public class PlayerMovement : MonoBehaviour void DoGravity() { if (gravityInactive > 0) { gravityVelocity = Vector3.zero; - gravityInactive = Mathf.Max(gravityInactive -= Time.deltaTime, 0); + gravityInactive = Mathf.Max(gravityInactive -= Time.fixedDeltaTime, 0); return; } if (grounded && gravityVelocity.y < 0) gravityVelocity = Vector3.zero; - gravityVelocity += Physics.gravity * (Time.deltaTime * gravityMultiplier); - characterController.Move(gravityVelocity * Time.deltaTime); + gravityVelocity += Physics.gravity * (Time.fixedDeltaTime * gravityMultiplier); + characterController.Move(gravityVelocity * Time.fixedDeltaTime); } void HandleConstantVelocity() {