using System; using System.Collections; using System.Collections.Generic; using Unity.VisualScripting; using UnityEngine; public partial class PlayerMain : MonoBehaviour { public static PlayerMain Instance {get; private set;} [SerializeField] private List characters; [SerializeField] private CharacterObject character; private PlayerInputHandler _input; private Rigidbody2D _rigidbody2D; private BoxCollider2D _collider2D; private CharacterSO _characterSO; private int _characterIndex; private void Awake() { if (Instance != null) { Debug.Log(name + " already exist! " + transform); Destroy(gameObject); return; } Instance = this; _input = GetComponent(); _rigidbody2D = GetComponent(); _collider2D = GetComponent(); } private void Start() { _input.OnJumpTrigger += Input_OnJumpTrigger; _input.OnChangeCharacterTrigger += Input_OnChangeCharacterTrigger; _input.OnRegularAttackTrigger += Input_OnRegularAttackTrigger; UpdateCharacter(); _footOffset = _collider2D.size.x / 2f; } private void Update() { PhysicsCheck(); } private void FixedUpdate() { MovementHandler(); FacingDir(); } private void Input_OnChangeCharacterTrigger(object sender, EventArgs e) { _characterIndex = (_characterIndex + 1) % characters.Count; UpdateCharacter(); } private void UpdateCharacter() { _characterSO = characters[_characterIndex]; UpdateCharacterVisual(); } }