개요
플레이어에게 대시 버튼을 누르면 대시를 할 수 있도록 Action을 추가했다.
내용
- PlayerActionDash.cs 추가
- CharacterBase에 있는 moveSpeed 이용
- PlayerController.cs 수정
- 공격 중에도 회피 취소 가능하도록 구현
- 추후 UI 바인딩을 위한 DashButtonPressed() 메서드 추가
이번에 추가한 PlayerActionDash 코드는 아래와 같다.
using UnityEngine;
public class PlayerActionDash : IPlayerAction
{
private PlayerController player;
private float duration = 0.25f; // 대시 유지 시간
private float timer; // 대시 경과 시간
private Vector3 direction; // 대시 방향
private float dashSpeedMultiplier = 3f; // 기본 이동 속도의 n배
private float dashSpeed; // 실제 대시 속도(계산한 값)
public bool IsActive { get; private set; } // 현재 대시 중인지 여부
public void StartAction(PlayerController player)
{
this.player = player;
IsActive = true;
timer = 0f;
// 조이스틱 입력값 있으면 그 방향, 없으면 캐릭터가 바라보는 방향
direction = player.GetMoveDirectionOrForward().normalized;
// 대시 속도 = 이동 속도 x 배수
dashSpeed = player.moveSpeed * dashSpeedMultiplier;
// TODO: 필요 시 애니메이션 재생
// player.PlayerAnimator.SetTrigger("Roll");
}
public void UpdateAction()
{
if (!IsActive) return;
DoDash();
}
private void DoDash()
{
timer += Time.deltaTime;
if (timer < duration)
{
player.CharacterController.Move(direction * dashSpeed * Time.deltaTime);
}
else
{
EndAction();
}
}
public void EndAction()
{
IsActive = false;
player = null;
}
}
그리고 인풋 여부 판별 메서드랑 추후 버튼 눌렀을 때 호출할 메서드는 PlayerController에 만들었다.
#region 대시 관련
public Vector3 GetMoveDirectionOrForward()
{
Vector3 dir = new Vector3(Joystick.Horizontal, 0, Joystick.Vertical);
return dir.sqrMagnitude > 0.01f ? dir.normalized : transform.forward;
}
public void DashButtonPressed()
{
if (!_actionDash.IsActive)
{
StartDashAction();
}
}
#endregion
느낀 점
애니메이션은 추후 에셋 구매 후 구현해야지 하는 생각으로 구현 안했는데 흠...고민이 좀 될 것 같다.
거리 대시랑 속력 대시라는 개념이 분리된다는 것도 이번에 새삼 깨달았다. 순간이동과 구르기는 다르지...그치...
오늘도 배웠다!
'공부 > [TIL] Game Bootcamp' 카테고리의 다른 글
[TIL] #7. 플레이어 피격 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (1) | 2025.04.29 |
---|---|
[TIL] #6. Animation event 작동 안함(뭔가 만들었다면 꼭 초기화를 하자) : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.25 |
[TIL] #4. 플레이어 공격 Action : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.23 |
[TIL] #3. 플레이어 State 분리 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.18 |
[TIL] #2. 에셋 캐릭터 애니메이션 편집 : 멋쟁이사자처럼부트캠프 Unity 게임 개발 3기 (0) | 2025.04.17 |