일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 최적화
- equals
- Android Plugin
- Abstract Factory Pattern
- Reflection
- UniRx
- Unity
- Addressable System
- c#
- 스프라이트 아틀라스
- ReferenceEquals
- 게임 개발
- design pattern
- 인앱 결제
- Zenject
- ==
- 플러그인
- Strategy Pattern
- Boxing
- ScriptableObject
- 1인 개발
- Post Processing
- addressable
- 디자인 패턴
- 포스트 프로세싱
- Unboxing
- sprite atlas
Archives
- Today
- Total
One_KWS
게임 개발 일지 #3 - PlayerController 개발 본문
Player Controller
Player Controller는 플레이어의 각 행동들을 제어하는 역할을 한다. 이동 중 공격 버튼을 눌렀을 때 이동을 멈추고 공격을 해야하고 공격 중에는 이동, 대쉬가 되지 않고 대쉬 중에도 이동, 공격이 되지 않게 하는 등 플레이어가 어떤 행동을 하는지에 따라 다르게 처리하도록 했다.
공격
플레이어가 공격할 때는 아래와 같은 규칙을 따른다.
- 플레이어가 이동 중이라면 이동을 멈추고 공격한다.
- 플레이어가 대쉬 중이라면 공격이 되지 않는다. (나중에 대쉬+공격 기능을 넣는다면 다르게 해야 될 것 같다.)
위의 규칙에 따라 코드는 아래와 같이 작성하였다.
private void Attack() {
if (playerDash.IsOngoing) {
return;
}
if (playerMovement.IsOngoing) {
playerMovement.Cancel();
}
playerCombat.Execute();
}
이동
플레이어의 이동은 대쉬나 공격중에는 실행되지 않는다. 따라서 코드는 아래와 같이 작성했다.
private void Move() {
if (playerCombat.IsOngoing || playerDash.IsOngoing) {
return;
}
playerMovement.Execute();
}
대쉬
플레이어의 대쉬는 공격 중에는 실행되지 않기 때문에 아래와 같이 구현했다.
private void Dash() {
if (playerCombat.IsOngoing) {
return;
}
playerDash.Execute();
}
Health
Health 클래스는 플레이어나 몬스터, 보스의 체력 관련 처리를 한다. (데미지 계산 및 죽음 등) 데미지를 받았을 때 남은 체력을 계산하고 (남은 체력이 0 이하라면 죽음 처리) 델리게이트를 통해 데미지를 입었을 때 다른 클래스에서도 처리할 수 있도록 했다.
...
public Action<float> OnHit;
public Action OnDead;
public bool IsDead = false;
...
public void TakeDamage(float damage) {
healthPoint -= damage;
if (healthPoint <= 0) {
SetCharacterDead();
return;
}
OnHit?.Invoke(damage);
}
private void SetCharacterDead() {
animator.SetTrigger("death");
OnDead?.Invoke();
IsDead = true;
}
'게임 개발' 카테고리의 다른 글
게임 개발 일지 #6 - 플레이어 공격 개선 (0) | 2023.02.08 |
---|---|
게임 개발 일지 #5 - 몬스터 공격, 이동 (0) | 2023.01.26 |
게임 개발 일지 #4 - 몬스터 데미지, 체력바, 카메라 이동 (0) | 2023.01.13 |
게임 개발 일지 #2 - 플레이어 이동, 공격, 대시 (0) | 2023.01.07 |
게임 개발 일지 #1 - 프로젝트 시작, 조이스틱 개발 (0) | 2022.12.29 |