From 8ffc3bf7630a1ad952efdd61d6c0823c7ebed9ce Mon Sep 17 00:00:00 2001 From: Samir Badi Date: Thu, 2 Nov 2023 09:32:59 -0400 Subject: [PATCH] Refactor way to change character --- Assets/Datas/Characters/Character-Blue.asset | 2 +- Assets/Datas/Characters/Character-Green.asset | 2 +- Assets/Datas/Characters/Character-Red.asset | 2 +- .../PlayerVisuals/CharacterVisual-Blue.prefab | 14 ++++++++++++++ .../CharacterVisual-Green.prefab | 14 ++++++++++++++ .../PlayerVisuals/CharacterVisual-Red.prefab | 14 ++++++++++++++ Assets/Scenes/SampleScene.unity | 14 +++++++++++++- Assets/Scripts/Characters/CharacterObject.cs | 10 ++++++++++ .../Characters/CharacterObject.cs.meta | 11 +++++++++++ Assets/Scripts/Characters/CharacterSO.cs | 4 ++-- Assets/Scripts/Players/PlayerInputHandler.cs | 3 +++ Assets/Scripts/Players/PlayerMain.cs | 5 ++++- Assets/Scripts/Players/PlayerMain_Attack.cs | 15 +++++++++++++++ .../Scripts/Players/PlayerMain_Attack.cs.meta | 11 +++++++++++ Assets/Scripts/Players/PlayerMain_Visual.cs | 19 ++++++++++--------- 15 files changed, 124 insertions(+), 16 deletions(-) create mode 100644 Assets/Scripts/Characters/CharacterObject.cs create mode 100644 Assets/Scripts/Characters/CharacterObject.cs.meta create mode 100644 Assets/Scripts/Players/PlayerMain_Attack.cs create mode 100644 Assets/Scripts/Players/PlayerMain_Attack.cs.meta diff --git a/Assets/Datas/Characters/Character-Blue.asset b/Assets/Datas/Characters/Character-Blue.asset index 019361b..ad30040 100644 --- a/Assets/Datas/Characters/Character-Blue.asset +++ b/Assets/Datas/Characters/Character-Blue.asset @@ -12,4 +12,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6586e6eccc6a6524f8306b84b5bce41e, type: 3} m_Name: Character-Blue m_EditorClassIdentifier: - visual: {fileID: 787892284532640699, guid: fee6a0905f76ca9429469e6fc24d9152, type: 3} + visual: {fileID: -4413060711985458707, guid: fee6a0905f76ca9429469e6fc24d9152, type: 3} diff --git a/Assets/Datas/Characters/Character-Green.asset b/Assets/Datas/Characters/Character-Green.asset index cd12a07..e1f0df5 100644 --- a/Assets/Datas/Characters/Character-Green.asset +++ b/Assets/Datas/Characters/Character-Green.asset @@ -12,4 +12,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6586e6eccc6a6524f8306b84b5bce41e, type: 3} m_Name: Character-Green m_EditorClassIdentifier: - visual: {fileID: 4837197990537739891, guid: a38b7af5e2dfcd14e8742dfa865ac642, type: 3} + visual: {fileID: 3720866698639095966, guid: a38b7af5e2dfcd14e8742dfa865ac642, type: 3} diff --git a/Assets/Datas/Characters/Character-Red.asset b/Assets/Datas/Characters/Character-Red.asset index a28e82c..9d02e25 100644 --- a/Assets/Datas/Characters/Character-Red.asset +++ b/Assets/Datas/Characters/Character-Red.asset @@ -12,4 +12,4 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 6586e6eccc6a6524f8306b84b5bce41e, type: 3} m_Name: Character-Red m_EditorClassIdentifier: - visual: {fileID: 5794434337033297906, guid: 0846afb1b6dd56049bc60c2f2398b00a, type: 3} + visual: {fileID: -4496310365104306180, guid: 0846afb1b6dd56049bc60c2f2398b00a, type: 3} diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab index 4368f9e..71d2e7d 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Blue.prefab @@ -9,6 +9,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 787892284532640699} + - component: {fileID: -4413060711985458707} m_Layer: 0 m_Name: CharacterVisual-Blue m_TagString: Untagged @@ -32,6 +33,19 @@ Transform: - {fileID: 4036086214640701615} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-4413060711985458707 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1783183207727006741} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} + m_Name: + m_EditorClassIdentifier: + shootingPoint: {fileID: 0} --- !u!1 &2663764682251594756 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab index 53e2a59..88b3430 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Green.prefab @@ -9,6 +9,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 4837197990537739891} + - component: {fileID: 3720866698639095966} m_Layer: 0 m_Name: CharacterVisual-Green m_TagString: Untagged @@ -32,6 +33,19 @@ Transform: - {fileID: 3576563661194587730} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &3720866698639095966 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1993324788531503186} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} + m_Name: + m_EditorClassIdentifier: + shootingPoint: {fileID: 0} --- !u!1 &5256027320013452675 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab index 4d84ddc..a203981 100644 --- a/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab +++ b/Assets/Prefabs/PlayerVisuals/CharacterVisual-Red.prefab @@ -9,6 +9,7 @@ GameObject: serializedVersion: 6 m_Component: - component: {fileID: 5794434337033297906} + - component: {fileID: -4496310365104306180} m_Layer: 0 m_Name: CharacterVisual-Red m_TagString: Untagged @@ -32,6 +33,19 @@ Transform: - {fileID: 1647310808306953429} m_Father: {fileID: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-4496310365104306180 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 5187731018528474026} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} + m_Name: + m_EditorClassIdentifier: + shootingPoint: {fileID: 0} --- !u!1 &5507699080222957821 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/SampleScene.unity index e63b10c..428b2b6 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/SampleScene.unity @@ -533,6 +533,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: d673274af6c36104abfc3cb26d0d9d80, type: 3} m_Name: m_EditorClassIdentifier: + character: {fileID: 3771630860942019281} + shootingPoint: {fileID: 0} speed: 8 jumpVelocity: 40 groundLayer: @@ -544,7 +546,6 @@ MonoBehaviour: - {fileID: 11400000, guid: 64632c3f35ba931498cb6403c3064410, type: 2} - {fileID: 11400000, guid: ed8b37ae4c6cc2e4ca39d8fdc571beca, type: 2} - {fileID: 11400000, guid: 669eb3734bbebe24f8e7188e39e51011, type: 2} - visualTransform: {fileID: 3771630860942019280} --- !u!114 &1094939062 MonoBehaviour: m_ObjectHideFlags: 0 @@ -2938,6 +2939,17 @@ Transform: m_CorrespondingSourceObject: {fileID: 787892284532640699, guid: fee6a0905f76ca9429469e6fc24d9152, type: 3} m_PrefabInstance: {fileID: 3771630860942019279} m_PrefabAsset: {fileID: 0} +--- !u!114 &3771630860942019281 stripped +MonoBehaviour: + m_CorrespondingSourceObject: {fileID: -4413060711985458707, guid: fee6a0905f76ca9429469e6fc24d9152, type: 3} + m_PrefabInstance: {fileID: 3771630860942019279} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4224d6107d5e7894693e80f4571e0d59, type: 3} + m_Name: + m_EditorClassIdentifier: --- !u!1660057539 &9223372036854775807 SceneRoots: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/Characters/CharacterObject.cs b/Assets/Scripts/Characters/CharacterObject.cs new file mode 100644 index 0000000..7708e33 --- /dev/null +++ b/Assets/Scripts/Characters/CharacterObject.cs @@ -0,0 +1,10 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class CharacterObject : MonoBehaviour +{ + [SerializeField] private Transform shootingPoint; + + public Transform GetShootingPoint() => shootingPoint; +} diff --git a/Assets/Scripts/Characters/CharacterObject.cs.meta b/Assets/Scripts/Characters/CharacterObject.cs.meta new file mode 100644 index 0000000..4b07519 --- /dev/null +++ b/Assets/Scripts/Characters/CharacterObject.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4224d6107d5e7894693e80f4571e0d59 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Characters/CharacterSO.cs b/Assets/Scripts/Characters/CharacterSO.cs index 6f8c06a..1545f7f 100644 --- a/Assets/Scripts/Characters/CharacterSO.cs +++ b/Assets/Scripts/Characters/CharacterSO.cs @@ -5,7 +5,7 @@ using UnityEngine; [CreateAssetMenu(fileName = "Character", menuName = "ScriptableObjects/CharacterSO")] public class CharacterSO : ScriptableObject { - [SerializeField] private Transform visual; + [SerializeField] private CharacterObject visual; - public Transform Visual => visual; + public CharacterObject Visual => visual; } \ No newline at end of file diff --git a/Assets/Scripts/Players/PlayerInputHandler.cs b/Assets/Scripts/Players/PlayerInputHandler.cs index ca69019..e5828bd 100644 --- a/Assets/Scripts/Players/PlayerInputHandler.cs +++ b/Assets/Scripts/Players/PlayerInputHandler.cs @@ -10,6 +10,7 @@ public class PlayerInputHandler : MonoBehaviour { public event EventHandler OnJumpTrigger; public event EventHandler OnChangeCharacterTrigger; + public event EventHandler OnRegularAttackTrigger; public float MoveAxis { get; private set; } @@ -38,6 +39,8 @@ public class PlayerInputHandler : MonoBehaviour => OnJumpTrigger?.Invoke(this, EventArgs.Empty); _input.Player.ChangeCharacter.performed += (InputAction.CallbackContext obj) => OnChangeCharacterTrigger?.Invoke(this, EventArgs.Empty); + _input.Player.RegularAttack.performed += (InputAction.CallbackContext obj) + => OnRegularAttackTrigger?.Invoke(this, EventArgs.Empty); } private void Update() diff --git a/Assets/Scripts/Players/PlayerMain.cs b/Assets/Scripts/Players/PlayerMain.cs index 140dd11..4f7abd6 100644 --- a/Assets/Scripts/Players/PlayerMain.cs +++ b/Assets/Scripts/Players/PlayerMain.cs @@ -7,6 +7,8 @@ using UnityEngine; public partial class PlayerMain : MonoBehaviour { public static PlayerMain Instance {get; private set;} + + [SerializeField] private CharacterObject character; private PlayerInputHandler _input; private Rigidbody2D _rigidbody2D; @@ -33,12 +35,13 @@ public partial class PlayerMain : MonoBehaviour { _input.OnJumpTrigger += Input_OnJumpTrigger; _input.OnChangeCharacterTrigger += Input_OnChangeCharacterTrigger; + _input.OnRegularAttackTrigger += Input_OnRegularAttackTrigger; UpdateCharacterVisual(); _footOffset = _collider2D.size.x / 2f; } - + private void Update() { PhysicsCheck(); diff --git a/Assets/Scripts/Players/PlayerMain_Attack.cs b/Assets/Scripts/Players/PlayerMain_Attack.cs new file mode 100644 index 0000000..66ed33e --- /dev/null +++ b/Assets/Scripts/Players/PlayerMain_Attack.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public partial class PlayerMain +{ + [Header("Attack")] + [SerializeField] private Transform shootingPoint; + + private void Input_OnRegularAttackTrigger(object sender, EventArgs e) + { + + } +} \ No newline at end of file diff --git a/Assets/Scripts/Players/PlayerMain_Attack.cs.meta b/Assets/Scripts/Players/PlayerMain_Attack.cs.meta new file mode 100644 index 0000000..4872704 --- /dev/null +++ b/Assets/Scripts/Players/PlayerMain_Attack.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5462dc190cd6e024a862207e392f05e6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Players/PlayerMain_Visual.cs b/Assets/Scripts/Players/PlayerMain_Visual.cs index 564c1c0..9987360 100644 --- a/Assets/Scripts/Players/PlayerMain_Visual.cs +++ b/Assets/Scripts/Players/PlayerMain_Visual.cs @@ -8,10 +8,10 @@ public partial class PlayerMain { [Header("Visual")] [SerializeField] private List characters; - [SerializeField] private Transform visualTransform; private const float THRESHOLD = 0.01f; + private Transform _visualTransform; private float _facingDir = 1f; private int _characterIndex; @@ -23,14 +23,15 @@ public partial class PlayerMain private void UpdateCharacterVisual() { - if(visualTransform != null) - Destroy(visualTransform.gameObject); + if(character != null) + Destroy(character.gameObject); - visualTransform = Instantiate(characters[_characterIndex].Visual, transform); - visualTransform.localPosition = Vector3.zero; - Vector3 scale = visualTransform.localScale; + character = Instantiate(characters[_characterIndex].Visual, transform); + _visualTransform = character.transform; + _visualTransform.localPosition = Vector3.zero; + Vector3 scale = _visualTransform.localScale; scale.x *= _facingDir; - visualTransform.localScale = scale; + _visualTransform.localScale = scale; } private void FacingDir() @@ -38,9 +39,9 @@ public partial class PlayerMain if (_facingDir * _input.MoveAxis > -THRESHOLD) return; - Vector3 scale = visualTransform.localScale; + Vector3 scale = _visualTransform.localScale; _facingDir *= -1f; scale.x *= -1f; - visualTransform.localScale = scale; + _visualTransform.localScale = scale; } } \ No newline at end of file