IndieGame/client/Assets/Scripts/Component/Player/PlayerController.cs

66 lines
1.7 KiB
C#
Raw Normal View History

2024-10-11 10:12:15 +08:00

using Animancer;
using NodeCanvas.Framework;
using NodeCanvas.StateMachines;
using UnityEngine;
namespace Ether
{
[RequireComponent(typeof(Rigidbody2D))]
public class PlayerController : MonoBehaviour
{
Rigidbody2D playerRigid;
FSMOwner fsmOwer;
Blackboard blackboard;
bool isInputEnabled = true;
private void Start()
{
playerRigid = GetComponent<Rigidbody2D>();
fsmOwer = GetComponent<FSMOwner>();
blackboard = GetComponent<Blackboard>();
DontDestroyOnLoad(gameObject);
}
private void OnEnable()
{
EventCenter.AddListener<ReInputEvent, Vector2>(ReInputEvent.Move, OnMove);
}
private void OnMove(Vector2 move)
{
if (!isInputEnabled)
{
return;
}
if (move == Vector2.zero)
{
blackboard.SetVariableValue("moveDirection", move);
}
else
{
blackboard.SetVariableValue("moveDirection", move);
}
}
public void SetInputOperation(bool isEnable)
{
Vector2 moveDirection = blackboard.GetVariableValue<Vector2>("moveDirection");
if (moveDirection != Vector2.zero)
{
blackboard.SetVariableValue("direction", moveDirection);
blackboard.SetVariableValue("moveDirection", Vector2.zero);
}
isInputEnabled = isEnable;
}
private void OnDisable()
{
EventCenter.RemoveListener<ReInputEvent, Vector2>(ReInputEvent.Move, OnMove);
}
}
}