47 lines
1.3 KiB
C#
47 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;
|
|
|
|
private const float THRESHOLD = 0.01f;
|
|
|
|
private Transform _visualTransform;
|
|
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(character != null)
|
|
Destroy(character.gameObject);
|
|
|
|
character = Instantiate(characters[_characterIndex].Visual, transform);
|
|
_visualTransform = character.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;
|
|
}
|
|
} |