이번시간에는 적을 구현해보도록 하겠습니다.
먼저 스프라이트 중 enemy라고 쓰여져 있는 스프라이트를 가져와, 계층창에 끌어다 놔 object를 만들어 줍니다.
그 스프라이트에 컴포넌트로 animator를 추가한 뒤, action - enemy에 들어있는 ac enemy0을 넣어줍니다

또한 몬스터가 그려지는 위치를 2번으로 잡아서 그림자보다 위로 올라오게 하고, 그림자도 추가해준 뒤 높이를 -0.45 해주시면 됩니다.


또한 몬스터가 중력의 영향을 받거나, 회전을 하면 안되기에 중력 배율을 0으로 해주고, z 축 방향으로 도는 것을 막아준다.

또한 플레이어와의 충돌 감지를 위해 capsule collider를 추가해줍니다

캡슐콜라이더의 크기를 조정해 준 뒤 적 오브젝트를 복사해줍니다
그 복사된 오브젝트에 애니메이션은 enemy 1을 넣어줍니다

플레이어의 mass도 5로 변경해줍니다
이제 적들이 플레이어를 추적하는 로직을 짜보도록 하겠습니다.
public class Enemy : MonoBehaviour
{
public float speed;
public Rigidbody2D target;
bool isLive;
Rigidbody2D rigid;
SpriteRenderer spriter;
void Awake(){
rigid = GetComponent<Rigidbody2D>();
spriter = GetComponent<SpriteRenderer>();
}
void FixedUpdate()
{
Vector2 dirVec = target.position - rigid.position;
Vector2 nextVec = dirVec.normalized * speed* Time.fixedDeltaTime;
rigid.MovePosition(rigid.position + nextVec);
rigid.velocity = Vector2.zero;
}
}
완성된 로직입니다. 먼저 rigid와 spriter는 awake 때 초기화를 해주고, fixedupdate를 통해서 적이 움직이게 해 줍니다.
먼저 dirVec의 경우는 rigidbody에 있는 position값을 빼서 구해주고, nextVec은 그 구한 값을 플래이어 이동방식과 비슷하게 만들어 줍니다.
그리고, 플레이어와 적의 충돌시를 대비하여 속도는 항상 0으로 해줍니다.
추가적인 구현은 다음글에서 더 해보도록 하겠습니다!
7월 28일
'유니티 > 뱀서라이크' 카테고리의 다른 글
| 뱀서라이크 따라하기 - 오브젝트 풀링 1 (0) | 2023.07.29 |
|---|---|
| 뱀서라이크 따라하기 - 적 구현하기 2편 (0) | 2023.07.28 |
| 뱀서라이크 따라하기 - 4강 재배치 로직 마무리 (0) | 2023.07.26 |
| 뱀서라이크 따라하기 - 4강 재배치 스크립트 준비하기 (0) | 2023.07.25 |
| 뱀서라이크 - 4강 무한맵 구현하기 첫번째 (0) | 2023.07.24 |