진행한 것들
적 상태머신 틀 구현
플레이어 상태를 구현하고 적 상태도 구현하기 위해 공통적인 부분들을 부모 클래스로 하여 상속받아 구현하였다.
플레이어와 적 상태머신의 공통적인 부분을 StateMachine에 합치고
using UnityEngine;
public abstract class StateMachine
{
protected IState currentState;
public abstract void Init();
public void ChangeState(IState newState)
{
currentState?.Exit();
currentState = newState;
currentState?.Enter();
}
public virtual void Update()
{
currentState.UpdateState();
}
public virtual void PhysicsUpdate()
{
currentState.PhysicsUpdateState();
}
}
캐릭터 제어와 관련된 공통적인 부분은 CharacterController에 작성하였다.
[RequireComponent(typeof(Rigidbody))]
public abstract class CharacterController : MonoBehaviour
{
public AnimationController AnimationController { get; private set; }
public Rigidbody Rigidbody { get; private set; }
[field: SerializeField] public MovementData MovementData { get; private set; }
[field: SerializeField] public GroundData GroundData { get; private set; }
protected virtual void Awake()
{
Rigidbody = GetComponent<Rigidbody>();
AnimationController = GetComponentInChildren<AnimationController>();
AnimationController.Init();
}
}
오늘의 이슈 / 내일 할 것
적의 추적 범위, 추적 빈도
이슈
1. 적의 추적 범위는 어느정도 되며
2. 어떤 조건에서 추적 상태를 취소시킬건지
3. 이동할 땅이 존재하는지에 대한 체크는 어떻게 할 것인지
생각해본 것
1. 생성한 이후 맵 전체에서 고유한 플레이어를 추적
2. 일정 거리가 벗어난 5초 뒤에는 추적 상태 해제
3. 적 앞 쪽에 아래 방향으로 Ray를 쏴서 Ground면 이동 아니면 다시 패트롤 상태로 돌입 (추후 Raycast 성능 확인 필요)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnemyPatrolState : EnemyStateBase
{
public EnemyPatrolState(EnemyStateMachine stateMachine) : base(stateMachine)
{
}
public override void Enter()
{
}
public override void Exit()
{
}
public override void OnDead()
{
}
}
내일 할 것
패트롤 상태 구현
오늘의 회고
오늘은 적 상태머신을 만들기 위해 플레이어 컨트롤러와 플레이어 상태머신의 공통적인 부분을 분리한 뒤 이 부분을 적 컨트롤러와 적 상태머신이 상속받게 했다. 생각보다 큰 작업이어서 테스트하는데도 시간이 좀 걸렸고 좋았던 부분은 다시 내 코드를 보면서 아 이런 방식으로 작성했었지 하면서 다시 공부하게 되는 시간이 됐던 것이다. 내일은 패트롤 상태를 구현하게 되는데 빨리빨리 구현해서 프로토타입을 완성할 수 있었으면 좋겠다. 내일도 파이팅!
'스파르타 Unity 1기' 카테고리의 다른 글
DevLog - 이그라엘(IGRAL) 플레이어 연속 공격 (0) | 2023.11.02 |
---|---|
DevLog - 이그라엘(IGRAL) 적 순찰 (0) | 2023.11.01 |
DevLog - 이그라엘(IGRAL) 빌드와 이동 버그 수정 (1) | 2023.10.30 |
DevLog - 이그라엘(IGRAL) 플레이어 더블 점프와 구르기 (0) | 2023.10.27 |
DevLog - 이그라엘(IGRAL) 플레이어 이동 애니메이션과 상태머신 (1) | 2023.10.26 |