AI Navigation
Mathf.Approximately(value1, value2): 근사값인지 아닌지 bool 반환
public void OnMove(InputAction.CallbackContext context)
{
if(context.phase == InputActionPhase.Performed) // 누르고 있을 때
{
curMove = context.ReadValue<Vector2>(); //이동
}
else if(context.phase == InputActionPhase.Canceled) // 뗐을 때
{
curMove = Vector2.zero; //멈춤
}
}
public void OnJump(InputAction.CallbackContext context)
{
if(context.phase == InputActionPhase.Started) // 눌렀을 때
{
rb.AddForce(Vector2.up * jumpForce, ForceMode.Impulse);
}
}
void Update()
{
if (!CharacterManager.Instance.Player.controller.isRunning)
{
stamina.Add(stamina.passvieValue * Time.deltaTime);
}
}
public void UseStamina()
{
stamina.Subtract(decayStamina * Time.deltaTime);
}
public bool CanUseStamina()
{
return stamina.curValue > 0;
}
public void OnRun(InputAction.CallbackContext context)
{
if(context.phase == InputActionPhase.Performed)
{
isRunning = true;
}
else if(context.phase == InputActionPhase.Canceled)
{
isRunning = false;
}
}
private void Move()
{
float speed = isRunning && CharacterManager.Instance.Player.condition.CanUseStamina() ? runSpeed : moveSpeed;
if (isRunning)
{
CharacterManager.Instance.Player.condition.UseStamina();
}
Vector3 dir = transform.forward * curMove.y + transform.right * curMove.x;
dir *= speed;
dir.y = rb.velocity.y;
rb.velocity = dir;
}