일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- Abstract Factory Pattern
- 게임 개발
- 포스트 프로세싱
- Unboxing
- UniRx
- design pattern
- Unity
- Android Plugin
- 1인 개발
- Strategy Pattern
- Post Processing
- 플러그인
- Reflection
- sprite atlas
- Zenject
- ReferenceEquals
- 인앱 결제
- equals
- c#
- Boxing
- 최적화
- ScriptableObject
- 디자인 패턴
- 스프라이트 아틀라스
- ==
- Addressable System
- addressable
- Today
- Total
One_KWS
게임 개발 일지 #13 - 보스 몬스터 만들기 본문
캐릭터 및 애니메이션
캐릭터 & 무기
보스 몬스터로 아래 캐릭터를 사용했고 무기도 캐릭터에 맞게 골라 넣어 주었다.
애니메이션
일단 공격 패턴 먼저 구현하기 위해 공격 관련 부분의 애니메이션만 추가하였다. 총 3개의 패턴을 넣기 위해 공격 애니메이션도 각각 다른 3개의 애니메이션을 넣어주었다.
코드 구조
보스 몬스터의 이동 및 공격에 대한 구조는 일반 몬스터와 같다. 각 행동은 IBehaviour를 상속받고 있으며 BossController를 이용하여 제어해준다.
BossController
BossController는 보스 몬스터의 이동과 공격을 제어한다. 코드는 EnemyController와 유사하다. 현재는 공격에 대한 코드만 구현되어 있다.
public class BossController : MonoBehaviour {
...
private void Update() {
if (health.IsDead) {
return;
}
target = FindTarget();
if (target == null) {
return;
}
bossCombat.Execute(target.position);
if (bossCombat.IsOngoing) {
bossMovement.Cancel();
return;
}
bossMovement.Execute(target.position);
}
private Transform FindTarget() {
var hits = Physics.SphereCastAll(transform.position, sightRange, Vector3.up, 0);
foreach (var hit in hits) {
if (hit.transform.CompareTag("Player")) {
return hit.transform;
}
}
return null;
}
}
BossCombat
플레이어나 일반 몬스터와 마찬가지로 BossCombat 클래스도 IBehaviour 인터페이스를 구현한다. Execute()에서는 Random 클래스를 이용하여 공격 패턴 1~3에 대한 애니메이션을 랜덤으로 실행시킬 수 있게 구현했다.
public class BossCombat : MonoBehaviour, IBehaviour {
private readonly List<int> attacks = new List<int>() {
Animator.StringToHash("attack_1"),
Animator.StringToHash("attack_2"),
Animator.StringToHash("attack_3"),
};
[SerializeField] private int currentAttackIndex = 0;
public void Execute(Vector3 direction) {
// attacks의 인덱스를 랜덤 값으로 설정해 준다.
currentAttackIndex = Random.Range(0, attacks.Count);
var attack = attacks[currentAttackIndex];
animator.SetTrigger(attack);
}
}
원래는 공격 패턴 구현에 대한 글도 썼지만 너무 길어지는 것 같아서 한번 끊게 되었다. 다음 일지에 같이 올려야겠다 .. 최근에 일이 많아져서 일지를 2주가 넘게 못쓰고 있었는데 좀 더 시간을 잘 써봐야겠다.
사용 에셋
Character
POLYGON Modular Fantasy Hero Characters (Synty Studios)
POLYGON Fantasy Rivals (Synty Studios)
Animation
Oriental Sword AnimSet (wemakethegame)
DOTween (Demigiant)
VFX
Magic Arsenal (Magic Arsenal)
UI
GUI PRO Kit - Fantasy RPG (Layer Lab)
ETC
UniTask (neuecc - Yoshifumi Kawai)
'게임 개발' 카테고리의 다른 글
게임 개발 일지 #14 - 보스 공격 패턴 만들기 (0) | 2023.04.23 |
---|---|
게임 개발 일지 #12 - 다음 스테이지로 넘어가기 (0) | 2023.04.03 |
게임 개발 일지 #11 - 여러 종류 몬스터 만들기 (0) | 2023.03.21 |
게임 개발 일지 #10 - 게임 개선 (0) | 2023.03.11 |
게임 개발 일지 #9 - 아이템 (0) | 2023.03.07 |