46 lines
1.3 KiB
C#
46 lines
1.3 KiB
C#
using System;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.Serialization;
|
|
|
|
public partial class PlayerMain
|
|
{
|
|
[Header("Visual")]
|
|
[SerializeField] private List<CharacterSO> characters;
|
|
[SerializeField] private Transform visualTransform;
|
|
|
|
private const float THRESHOLD = 0.01f;
|
|
|
|
private float _facingDir = 1f;
|
|
private int _characterIndex;
|
|
|
|
private void Input_OnChangeCharacterTrigger(object sender, EventArgs e)
|
|
{
|
|
_characterIndex = (_characterIndex + 1) % characters.Count;
|
|
UpdateCharacterVisual();
|
|
}
|
|
|
|
private void UpdateCharacterVisual()
|
|
{
|
|
if(visualTransform != null)
|
|
Destroy(visualTransform.gameObject);
|
|
|
|
visualTransform = Instantiate(characters[_characterIndex].Visual, transform);
|
|
visualTransform.localPosition = Vector3.zero;
|
|
Vector3 scale = visualTransform.localScale;
|
|
scale.x *= _facingDir;
|
|
visualTransform.localScale = scale;
|
|
}
|
|
|
|
private void FacingDir()
|
|
{
|
|
if (_facingDir * _input.MoveAxis > -THRESHOLD)
|
|
return;
|
|
|
|
Vector3 scale = visualTransform.localScale;
|
|
_facingDir *= -1f;
|
|
scale.x *= -1f;
|
|
visualTransform.localScale = scale;
|
|
}
|
|
} |