오늘 배운 내용
-
몬스터가 플레이어를 추격하는 코드
-
Stack 자료구조는 Unity Inspector에서 SerializeField를 지원하지 않는다.
몬스터가 플레이어를 추격하는 코드
몬스터가 플레이어를 추격하는 기능을 구현하기 위해 필요한 것은
- 몬스터의 위치 (transform.position)
- 플레이어의 위치 (GameManager.Instance.Player.transform.position)
이 두 가지를 사용해서 방향과 거리를 구할 수 있다.
protected float DistanceToTarget()
{
return Vector3.Distance(transform.position, ClosetTarget.position);
}
protected Vector2 DirectionToTarget()
{
return (GameManager.Instance.Player.transform.position - transform.position).normalized;
}
그리고 fixedUpdate()마다 방향과 거리를 구해서
protected override void FixedUpdate()
{
base.FixedUpdate();
Vector2 direction = Vector2.zero;
if(DistanceToTarget() < followRange)
{
direction = DirectionToTarget();
}
CallMoveEvent(direction);
Rotate(direction);
}
범위 안에 있다면 해당 방향으로 움직이도록 한다.
Stack 자료구조는 Unity Inspector에서 SerializeField를 지원하지 않는다.
개인 프로젝트 간에 ON되는 UI들의 순서를 Stack 저장해뒀다가
뒤로가기 버튼으로 Stack에서 Pop()을 하며 UI를 Off하는 기능을 만들었다.
도중에 테스트를 하기위해서 SerializeField를 선언해서 유니티의 Inspector창에서 Stack을 확인해 보려고했다
그런데 표시가 되지 않았고, 이유를 찾아보게 되었다.
nity Inspector에서 SerializeField를 사용하면 해당 변수는 직렬화되어 인스펙터에서 수정할 수 있게 되는데
Stack은 Unity에서 기본적으로 지원화는 직렬화 형식이 아니기 때문에 인스펙터에서 표시되지 않는다.