2023-11-02 10:09:02 -04:00

70 lines
1.7 KiB
C#

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<CharacterSO> 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<PlayerInputHandler>();
_rigidbody2D = GetComponent<Rigidbody2D>();
_collider2D = GetComponent<BoxCollider2D>();
}
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();
}
}