Refactor way to change character

This commit is contained in:
Samir Badi 2023-11-02 09:32:59 -04:00
parent 9809f68561
commit 8ffc3bf763
15 changed files with 124 additions and 16 deletions

View File

@ -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}

View File

@ -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}

View File

@ -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}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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;
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 4224d6107d5e7894693e80f4571e0d59
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -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;
}

View File

@ -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()

View File

@ -8,6 +8,8 @@ public partial class PlayerMain : MonoBehaviour
{
public static PlayerMain Instance {get; private set;}
[SerializeField] private CharacterObject character;
private PlayerInputHandler _input;
private Rigidbody2D _rigidbody2D;
private BoxCollider2D _collider2D;
@ -33,6 +35,7 @@ public partial class PlayerMain : MonoBehaviour
{
_input.OnJumpTrigger += Input_OnJumpTrigger;
_input.OnChangeCharacterTrigger += Input_OnChangeCharacterTrigger;
_input.OnRegularAttackTrigger += Input_OnRegularAttackTrigger;
UpdateCharacterVisual();

View File

@ -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)
{
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 5462dc190cd6e024a862207e392f05e6
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -8,10 +8,10 @@ public partial class PlayerMain
{
[Header("Visual")]
[SerializeField] private List<CharacterSO> 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;
}
}