728x90
728x90
이번 포스팅에서는 적 캐릭터를 만들고, 플레이어를 인식하여 다가오는 간단한 AI 시스템을 구현해보겠습니다. 적들이 플레이어를 향해 이동하며, 플레이어가 적을 피해 다니거나 처치할 수 있도록 게임의 도전 요소를 추가할 예정입니다.
1. 적 캐릭터 오브젝트 생성
1.1 적 스프라이트 추가
- Hierarchy 창에서 2D Object > Sprite를 선택하여 새 오브젝트를 생성하고, 이름을 Enemy로 변경합니다.
- Sprite Renderer의 Sprite 항목에 적 캐릭터 스프라이트를 추가하거나 기본 도형(예: 사각형 또는 원)을 사용해도 좋습니다.
- 적 오브젝트의 크기를 Scale을 0.5 정도로 조정하여 플레이어와 차별화합니다.
1.2 Rigidbody2D 및 Collider 추가
- Rigidbody2D 컴포넌트 추가:
- Enemy 오브젝트에 Rigidbody2D를 추가하고, Body Type을 Kinematic으로 설정합니다.
- 물리적 충돌에 영향을 받지 않도록 설정하여 자연스러운 이동을 구현할 수 있습니다.
- Collider 추가:
- Enemy 오브젝트에 Circle Collider 2D를 추가합니다.
- Is Trigger 옵션을 비활성화하여 플레이어와 충돌할 수 있도록 설정합니다.
2. 적 AI 스크립트 작성
이번에는 적이 플레이어를 따라 이동하도록 기본 AI를 추가해 보겠습니다.
2.1 EnemyMovement 스크립트 작성
- Assets > Scripts 폴더에서 EnemyMovement.cs 스크립트를 생성하고, 다음과 같이 작성합니다:
using UnityEngine;
public class EnemyMovement : MonoBehaviour
{
public float speed = 3f; // 적 이동 속도
private Transform player; // 플레이어의 위치
void Start()
{
// "Player" 태그를 가진 오브젝트를 찾음
player = GameObject.FindGameObjectWithTag("Player").transform;
}
void Update()
{
// 플레이어가 존재할 경우 이동
if (player != null)
{
Vector2 direction = (player.position - transform.position).normalized;
transform.position = Vector2.MoveTowards(transform.position, player.position, speed * Time.deltaTime);
}
}
}
2.2 EnemyMovement 스크립트 추가
- Enemy 오브젝트에 EnemyMovement 스크립트를 추가합니다.
- speed 값을 적절히 조정하여 플레이어에게 접근하는 속도를 설정합니다.
3. 적 체력 및 플레이어 총알과의 상호작용
적을 처치할 수 있도록 간단한 체력 시스템을 추가하고, 총알과 충돌 시 사라지도록 구현하겠습니다.
3.1 EnemyHealth 스크립트 작성
- Assets > Scripts 폴더에서 EnemyHealth.cs 스크립트를 생성하고, 아래와 같이 작성합니다:
using UnityEngine;
public class EnemyHealth : MonoBehaviour
{
public int health = 3; // 적의 체력
public void TakeDamage(int damage)
{
health -= damage;
// 체력이 0 이하일 때 적 오브젝트 제거
if (health <= 0)
{
Die();
}
}
void Die()
{
Destroy(gameObject);
}
}
3.2 Bullet 스크립트 수정
- Bullet.cs 스크립트를 열고, 적과 충돌할 때 데미지를 주도록 다음 코드를 추가합니다:
void OnTriggerEnter2D(Collider2D hitInfo)
{
EnemyHealth enemy = hitInfo.GetComponent<EnemyHealth>();
if (enemy != null)
{
enemy.TakeDamage(1); // 적에게 1의 데미지
}
// 총알 제거
Destroy(gameObject);
}
2. 이 코드는 총알이 EnemyHealth 컴포넌트를 가진 오브젝트와 충돌할 때 TakeDamage() 메서드를 호출하여 체력을 감소시키는 역할을 합니다.
3.3 Enemy 오브젝트에 EnemyHealth 스크립트 추가
- Enemy 오브젝트에 EnemyHealth 스크립트를 추가하고, health 값을 원하는 만큼 설정합니다(예: 3).
4. 테스트 및 조정
- Play 모드로 실행
- 적이 플레이어를 향해 이동하고, 총알이 적과 충돌할 때 체력이 감소하는지 확인합니다.
- 체력이 0이 되면 적 오브젝트가 사라져야 합니다.
- 난이도 조정
- EnemyHealth에서 체력 값을 조정하여 각 적의 생존력을 변경할 수 있습니다.
- EnemyMovement에서 speed 값을 조정하여 이동 속도를 설정할 수 있습니다.
5. 정리 및 다음 단계 예고
이번 포스팅에서는 적이 플레이어를 인식하고 따라오는 AI와 기본적인 체력 시스템을 구현했습니다. 다음 포스팅에서는 적 스폰 시스템을 추가하여 적들이 일정한 간격으로 등장하도록 만들어, 게임이 더 긴장감 있게 진행되도록 만들어보겠습니다.
게임이 점점 더 완성에 가까워지고 있으니, 다음 포스팅도 기대해 주세요!
728x90
'유니티 > 탑 다운 슈팅 게임 만들기' 카테고리의 다른 글
탑다운 슈팅 게임 만들기 #5 – 플레이어와 적의 체력 및 게임 오버 구현 (1) | 2024.11.12 |
---|---|
탑다운 슈팅 게임 만들기 #4 – 적 스폰 시스템 구현하기 (0) | 2024.11.11 |
탑다운 슈팅 게임 만들기 #2 – 플레이어 슈팅 메커니즘 구현하기 (1) | 2024.11.09 |
탑다운 슈팅 게임 만들기 #1 – 프로젝트 설정 및 플레이어 컨트롤 구현 (2) | 2024.11.08 |
탑다운 슈팅 게임(Top-Down Shooter)이란? (0) | 2024.11.07 |