From 0069843f11ed6624ca02d28d920610aa9f699b86 Mon Sep 17 00:00:00 2001 From: Andre-Messias Date: Sun, 29 Sep 2024 22:00:17 -0300 Subject: [PATCH] Ataque e chave --- Assets/Items.meta | 8 + Assets/Items/Item.cs | 12 + Assets/Items/Item.cs.meta | 11 + Assets/Items/ScriptableItem.cs | 29 +++ Assets/Items/ScriptableItem.cs.meta | 11 + Assets/Items/Sword.asset | 18 ++ Assets/Items/Sword.asset.meta | 8 + Assets/Items/Sword.prefab | 49 +++++ Assets/Items/Sword.prefab.meta | 7 + Assets/PlayerAttack.cs | 55 ++++- Assets/Prefabs/Player.prefab | 23 +- Assets/Scenes/TestScene.unity | 281 +++++++++++++++++++----- Assets/Scripts/Player/HPController.cs | 5 + Assets/Scripts/Player/Player.cs | 66 ++++++ Assets/Scripts/Player/Player.cs.meta | 11 + Assets/Scripts/Player/PlayerInput.cs | 2 +- Assets/Scripts/Player/PlayerMovement.cs | 12 +- ProjectSettings/TagManager.asset | 2 + 18 files changed, 536 insertions(+), 74 deletions(-) create mode 100644 Assets/Items.meta create mode 100644 Assets/Items/Item.cs create mode 100644 Assets/Items/Item.cs.meta create mode 100644 Assets/Items/ScriptableItem.cs create mode 100644 Assets/Items/ScriptableItem.cs.meta create mode 100644 Assets/Items/Sword.asset create mode 100644 Assets/Items/Sword.asset.meta create mode 100644 Assets/Items/Sword.prefab create mode 100644 Assets/Items/Sword.prefab.meta create mode 100644 Assets/Scripts/Player/Player.cs create mode 100644 Assets/Scripts/Player/Player.cs.meta diff --git a/Assets/Items.meta b/Assets/Items.meta new file mode 100644 index 0000000..a5a97a8 --- /dev/null +++ b/Assets/Items.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8d073ca5f35f11649ac1336aa22f2fc2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Items/Item.cs b/Assets/Items/Item.cs new file mode 100644 index 0000000..037e8de --- /dev/null +++ b/Assets/Items/Item.cs @@ -0,0 +1,12 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class Item : MonoBehaviour +{ + [Header("Status")] + public int damage = 1; + public float range = 1f; + public float attackCooldown = 1f; + +} diff --git a/Assets/Items/Item.cs.meta b/Assets/Items/Item.cs.meta new file mode 100644 index 0000000..7c26eba --- /dev/null +++ b/Assets/Items/Item.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 2818e2268277df0499785e7edfc40dcf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Items/ScriptableItem.cs b/Assets/Items/ScriptableItem.cs new file mode 100644 index 0000000..a32d7ea --- /dev/null +++ b/Assets/Items/ScriptableItem.cs @@ -0,0 +1,29 @@ +using Mantega; +using UnityEngine; + +[CreateAssetMenu(fileName = "Item", menuName = "ScriptableObjects/Item", order = 1)] +public class ScriptableItem : ScriptableObject +{ + public new string name; + public Sprite icon; + + [Header("Prefab")] + public GameObject prefab; + public Item item; + + public void Instantiate(Vector3 position, Quaternion rotation) + { + Instantiate(prefab, position, rotation); + } + + private void OnValidate() + { + if(item == null && prefab != null) + { + if(!Generics.FamilyTryGetComponent(prefab, out item)) + { + Debug.LogAssertion("Prefab must have a Item component"); + } + } + } +} diff --git a/Assets/Items/ScriptableItem.cs.meta b/Assets/Items/ScriptableItem.cs.meta new file mode 100644 index 0000000..ff93f7f --- /dev/null +++ b/Assets/Items/ScriptableItem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d12505b8e17acbf44912c0220535c4d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Items/Sword.asset b/Assets/Items/Sword.asset new file mode 100644 index 0000000..0d4abe5 --- /dev/null +++ b/Assets/Items/Sword.asset @@ -0,0 +1,18 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d12505b8e17acbf44912c0220535c4d5, type: 3} + m_Name: Sword + m_EditorClassIdentifier: + name: Sword + icon: {fileID: 0} + prefab: {fileID: 6741968925869854149, guid: 10542f4c6e8b12f4baf1083d2b1dc4ab, type: 3} + item: {fileID: 7971206292936052240, guid: 10542f4c6e8b12f4baf1083d2b1dc4ab, type: 3} diff --git a/Assets/Items/Sword.asset.meta b/Assets/Items/Sword.asset.meta new file mode 100644 index 0000000..5b3e8b5 --- /dev/null +++ b/Assets/Items/Sword.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b73319ff41949104fb68b2ba76e1a4ef +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Items/Sword.prefab b/Assets/Items/Sword.prefab new file mode 100644 index 0000000..2354458 --- /dev/null +++ b/Assets/Items/Sword.prefab @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &6741968925869854149 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3863224172626366125} + - component: {fileID: 7971206292936052240} + m_Layer: 0 + m_Name: Sword + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3863224172626366125 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6741968925869854149} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7971206292936052240 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6741968925869854149} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 2818e2268277df0499785e7edfc40dcf, type: 3} + m_Name: + m_EditorClassIdentifier: + damage: 1 + range: 1 + attackCooldown: 1 diff --git a/Assets/Items/Sword.prefab.meta b/Assets/Items/Sword.prefab.meta new file mode 100644 index 0000000..3b7177a --- /dev/null +++ b/Assets/Items/Sword.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 10542f4c6e8b12f4baf1083d2b1dc4ab +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/PlayerAttack.cs b/Assets/PlayerAttack.cs index c944142..dde2528 100644 --- a/Assets/PlayerAttack.cs +++ b/Assets/PlayerAttack.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using UnityEngine; using Mantega; +using System; public class PlayerAttack : MonoBehaviour { @@ -10,32 +11,74 @@ public class PlayerAttack : MonoBehaviour [Header("Attack")] [SerializeField] private Transform attackPoint; - [SerializeField] private float attackRange = 1f; + [SerializeField] private bool _canAttack = true; + public Action attack; + + [Header("Weapon")] + public ScriptableItem weapon; + [SerializeField] private GameObject _weaponGameObject; + [SerializeField] private Item _weaponItem; void Start() { if (playerInput == null) Generics.ReallyTryGetComponent(gameObject, out playerInput); playerInput.attack += Attack; + + if (weapon != null) + ActiveWeapon(weapon); + } + + public void ResetAttack() + { + DesactiveWeapon(); + _canAttack = true; + } + + public void DesactiveWeapon() + { + if(_weaponGameObject != null) + Destroy(_weaponGameObject); + weapon = null; + _weaponItem = null; + } + + public void ActiveWeapon(ScriptableItem newWeapon) + { + DesactiveWeapon(); + weapon = newWeapon; + if(weapon.prefab != null) + { + _weaponGameObject = Instantiate(weapon.prefab, transform); + Generics.FamilyTryGetComponent(_weaponGameObject, out _weaponItem); + } } void Attack() { - Debug.Log("Attack"); - var collisions = Physics.OverlapSphere(attackPoint.position, attackRange); + if(!_canAttack || _weaponItem == null) + return; + + _canAttack = false; + Invoke(nameof(CooldownAttack), _weaponItem.attackCooldown); + attack?.Invoke(_weaponItem.attackCooldown); + + var collisions = Physics.OverlapSphere(attackPoint.position, _weaponItem.range); foreach (var collision in collisions) { if (Generics.FamilyTryGetComponent(collision.gameObject, out HPController hpController) && hpController.gameObject.tag == "Enemy") - hpController.LoseHP(1); + hpController.LoseHP(_weaponItem.damage); } } + void CooldownAttack() => _canAttack = true; + private void OnDrawGizmosSelected() { - if (attackPoint == null) + if (attackPoint == null || _weaponItem == null) return; - Gizmos.DrawWireSphere(attackPoint.position, attackRange); + Gizmos.DrawSphere(attackPoint.position, _weaponItem.range); } void OnDestroy() diff --git a/Assets/Prefabs/Player.prefab b/Assets/Prefabs/Player.prefab index bb4d258..ec6d40f 100644 --- a/Assets/Prefabs/Player.prefab +++ b/Assets/Prefabs/Player.prefab @@ -217,6 +217,7 @@ GameObject: - component: {fileID: 9187463006278666535} - component: {fileID: 2048224215761797906} - component: {fileID: 6755525692779146323} + - component: {fileID: 669423193226920414} m_Layer: 0 m_Name: Player m_TagString: Player @@ -385,7 +386,27 @@ MonoBehaviour: m_EditorClassIdentifier: playerInput: {fileID: 0} attackPoint: {fileID: 1047143529578504164} - attackRange: 0.6 + _canAttack: 1 + weapon: {fileID: 11400000, guid: b73319ff41949104fb68b2ba76e1a4ef, type: 2} + _weaponGameObject: {fileID: 0} + _weaponItem: {fileID: 0} +--- !u!114 &669423193226920414 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4632741985066660338} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7ec79ce7ce2f0aa45abbbd8c4fc8acca, type: 3} + m_Name: + m_EditorClassIdentifier: + keys: 0 + playerAttack: {fileID: 0} + playerMovement: {fileID: 0} + playerHealth: {fileID: 0} + basicWeapon: {fileID: 11400000, guid: b73319ff41949104fb68b2ba76e1a4ef, type: 2} --- !u!1 &8088374784937446622 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/TestScene.unity b/Assets/Scenes/TestScene.unity index 545519c..4f878d6 100644 --- a/Assets/Scenes/TestScene.unity +++ b/Assets/Scenes/TestScene.unity @@ -1754,12 +1754,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 447349874} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 31.9, y: 0.46, z: 99.75} m_LocalScale: {x: 5, y: 0.5, z: 5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1766908104} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &456175115 GameObject: @@ -2460,12 +2460,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 459379101} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -4.0503445, y: 0, z: 97.68611} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1766908104} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!43 &463272971 Mesh: @@ -2909,12 +2909,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 474086999} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 31.9, y: 0.46, z: 74.7} m_LocalScale: {x: 5, y: 0.5, z: 5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1766908104} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!43 &476721526 Mesh: @@ -4549,50 +4549,6 @@ Mesh: offset: 0 size: 0 path: ---- !u!1 &878289588 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 878289590} - - component: {fileID: 878289589} - m_Layer: 0 - m_Name: Test - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 0 ---- !u!114 &878289589 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 878289588} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a18c3832e0dd1f94c94d44478cc409e2, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!4 &878289590 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 878289588} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &901898051 stripped Transform: m_CorrespondingSourceObject: {fileID: 6120108858367297094, guid: d0427707cf33d634b95dd84f7a5aebf0, type: 3} @@ -6153,6 +6109,111 @@ Transform: m_Children: [] m_Father: {fileID: 175214254} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1344198238 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1344198239} + - component: {fileID: 1344198242} + - component: {fileID: 1344198241} + - component: {fileID: 1344198240} + m_Layer: 0 + m_Name: Door + m_TagString: Door + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1344198239 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344198238} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 54.52, y: 1.543117, z: 91.52819} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1766908104} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!65 &1344198240 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344198238} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1344198241 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344198238} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1344198242 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1344198238} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} --- !u!1 &1409213841 GameObject: m_ObjectHideFlags: 0 @@ -8020,6 +8081,111 @@ MonoBehaviour: m_EditorClassIdentifier: healing: 30 cooldown: 5 +--- !u!1 &1635695335 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1635695336} + - component: {fileID: 1635695339} + - component: {fileID: 1635695338} + - component: {fileID: 1635695337} + m_Layer: 0 + m_Name: Key + m_TagString: Key + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1635695336 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635695335} + serializedVersion: 2 + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 59.62615, y: 1.543117, z: 91.52819} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1766908104} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!135 &1635695337 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635695335} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &1635695338 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635695335} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &1635695339 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1635695335} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} --- !u!43 &1659974958 Mesh: m_ObjectHideFlags: 0 @@ -8536,6 +8702,12 @@ Transform: - {fileID: 158906599} - {fileID: 1175476217} - {fileID: 1635424785} + - {fileID: 474087004} + - {fileID: 2109764048} + - {fileID: 447349879} + - {fileID: 459379107} + - {fileID: 1635695336} + - {fileID: 1344198239} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!43 &1811599403 @@ -9693,12 +9865,12 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2109764043} serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: -75.9, y: 0.46, z: 38.4} m_LocalScale: {x: 5, y: 0.5, z: 5} m_ConstrainProportionsScale: 0 m_Children: [] - m_Father: {fileID: 0} + m_Father: {fileID: 1766908104} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!43 &2113122370 Mesh: @@ -10599,8 +10771,3 @@ SceneRoots: - {fileID: 4305133965129338553} - {fileID: 1268288251} - {fileID: 384981809} - - {fileID: 474087004} - - {fileID: 2109764048} - - {fileID: 447349879} - - {fileID: 459379107} - - {fileID: 878289590} diff --git a/Assets/Scripts/Player/HPController.cs b/Assets/Scripts/Player/HPController.cs index 7c9e683..48ecfa6 100644 --- a/Assets/Scripts/Player/HPController.cs +++ b/Assets/Scripts/Player/HPController.cs @@ -53,6 +53,11 @@ public void GameOver() } + public void ResetHP() + { + CurrentHP = MaxHP; + } + //Funcao para testar perda de vida e cura quando toca em inimigo void OnCollisionEnter(Collision collision) { diff --git a/Assets/Scripts/Player/Player.cs b/Assets/Scripts/Player/Player.cs new file mode 100644 index 0000000..61c54a5 --- /dev/null +++ b/Assets/Scripts/Player/Player.cs @@ -0,0 +1,66 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Mantega; + +public class Player : MonoBehaviour +{ + [Header("Game")] + public int keys = 0; + + [Header("Player")] + [SerializeField] private PlayerAttack playerAttack; + [SerializeField] private PlayerMovement playerMovement; + [SerializeField] private HPController playerHealth; + + [Header("Weapon")] + [SerializeField] private ScriptableItem basicWeapon; + + private void Start() + { + if(playerAttack == null) + Generics.FamilyTryGetComponent(gameObject, out playerAttack); + playerAttack.ResetAttack(); + + if (playerMovement == null) + Generics.FamilyTryGetComponent(gameObject, out playerMovement); + + if (playerHealth == null) + Generics.FamilyTryGetComponent(gameObject, out playerHealth); + playerHealth.ResetHP(); + } + + public void ResetPlayer() => ResetPlayer(transform.position); + public void ResetPlayer(Vector2 spawn) + { + keys = 0; + + playerHealth.ResetHP(); + playerAttack.ResetAttack(); + playerAttack.ActiveWeapon(basicWeapon); + + transform.position = spawn; + } + + private void OnCollisionEnter(Collision collision) + { + GameObject gam = collision.gameObject; + if (keys > 0 && gam.CompareTag("Door")) + { + Destroy(gam); + keys--; + } + } + + private void OnTriggerEnter(Collider other) + { + GameObject gam = other.gameObject; + Debug.Log(gam.name); + Debug.Log(gam.tag); + if (gam.CompareTag("Key")) + { + Destroy(gam); + keys++; + } + } +} diff --git a/Assets/Scripts/Player/Player.cs.meta b/Assets/Scripts/Player/Player.cs.meta new file mode 100644 index 0000000..6f5ca67 --- /dev/null +++ b/Assets/Scripts/Player/Player.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7ec79ce7ce2f0aa45abbbd8c4fc8acca +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Player/PlayerInput.cs b/Assets/Scripts/Player/PlayerInput.cs index 1afe6e6..44abd9e 100644 --- a/Assets/Scripts/Player/PlayerInput.cs +++ b/Assets/Scripts/Player/PlayerInput.cs @@ -20,7 +20,7 @@ public class PlayerInput : MonoBehaviour public Action dash; public KeyCode dashKey = KeyCode.LeftShift; - [Header("Dash Attack")] + [Header("Attack key")] public Action attack; public KeyCode attackKey = KeyCode.Mouse0; diff --git a/Assets/Scripts/Player/PlayerMovement.cs b/Assets/Scripts/Player/PlayerMovement.cs index d2ffd35..495d566 100644 --- a/Assets/Scripts/Player/PlayerMovement.cs +++ b/Assets/Scripts/Player/PlayerMovement.cs @@ -3,6 +3,7 @@ using UnityEngine; using Mantega; +// Future: implement slide public class PlayerMovement : MonoBehaviour { [Header("Components")] @@ -71,12 +72,6 @@ public class PlayerMovement : MonoBehaviour [SerializeField] private bool _isDashing = false; [SerializeField] private float dashDuration = 0.2f; - //[Header("Slide")] - //[SerializeField] private float slideForce = 15; - //[SerializeField] private float slideCooldown = 1; - //[SerializeField] private bool canSlide = true; - - [Header("Camera Effects")] // Rotation [SerializeField] private InterpolatedFloat cameraZRotationEffect = new(0, 0.2f); @@ -341,7 +336,7 @@ private void AirMove() else rb.AddForce(foward * airMoveSpeed); - Debug.Log($"Foward: {Vector3.Angle(foward, rb.velocity)}"); + //Debug.Log($"Foward: {Vector3.Angle(foward, rb.velocity)}"); // Sideways if (Vector3.Angle(sideways, rb.velocity) > 90f) @@ -349,7 +344,7 @@ private void AirMove() else rb.AddForce(sideways * airMoveSpeed * 0.75f); - Debug.Log($"Sideways: {Vector3.Angle(sideways, rb.velocity)}"); + //Debug.Log($"Sideways: {Vector3.Angle(sideways, rb.velocity)}"); } float GetAirMoveSpeed(float x) => (19 / (1 + Mathf.Pow((float)Math.E, 0.1f * (x - 30)))); @@ -447,7 +442,6 @@ private void OnCollisionStay(Collision other) if (IsGroundLayer(layer)) Ground(other); if (IsWallLayer(layer)) Wall(other); - } void Ground(Collision other) diff --git a/ProjectSettings/TagManager.asset b/ProjectSettings/TagManager.asset index 22675b8..8e86a05 100644 --- a/ProjectSettings/TagManager.asset +++ b/ProjectSettings/TagManager.asset @@ -7,6 +7,8 @@ TagManager: - Arrow - Enemy - Health Pack + - Key + - Door layers: - Default - TransparentFX