728x90
728x90
이번 포스팅에서는 플레이어의 슈팅 메커니즘을 구현해보겠습니다. 플레이어가 마우스를 클릭할 때마다 총알이 발사되도록 설정하고, 적을 타격할 수 있는 기본 공격을 만드는 것이 목표입니다. 지난 포스팅에서 만들었던 Player 오브젝트에 발사 기능을 추가하여, 플레이어가 마우스 방향을 바라보면서 총알을 발사하도록 만들어 봅시다.
1. 총알 오브젝트 생성
1.1 총알 스프라이트 추가
- 프로젝트 내에 새로운 총알 오브젝트를 만들어줍니다.
- Hierarchy 창에서 2D Object > Sprite를 선택하여 총알 오브젝트를 생성하고, 이름을 Bullet로 변경합니다.
- Sprite Renderer의 스프라이트로 원하는 총알 이미지를 할당하거나 기본 도형(예: 작은 Circle)을 사용해도 좋습니다.
- Bullet 오브젝트의 설정:
- Scale을 0.1 정도로 조정하여 크기를 줄입니다.
- Tag를 Bullet로 설정해줍니다.
1.2 Rigidbody2D 및 Collider 추가
- Rigidbody2D 컴포넌트 추가:
- Bullet 오브젝트에 Rigidbody2D 컴포넌트를 추가하고, Body Type을 Kinematic으로 설정합니다. 이렇게 하면 총알이 물리적으로 충돌할 때 영향을 받지 않습니다.
- Circle Collider 2D 추가:
- Bullet에 Circle Collider 2D를 추가하고, Collider의 Is Trigger 옵션을 활성화합니다. 이는 총알이 적과 충돌할 때 이벤트를 처리할 수 있게 해줍니다.
2. 총알 발사 스크립트 구현
이제 플레이어가 총알을 발사할 수 있도록 스크립트를 추가해 보겠습니다.
2.1 Bullet 스크립트 작성
- Assets > Scripts 폴더에서 Bullet.cs 스크립트를 생성하고, 아래와 같이 작성합니다:
-
csharp
using UnityEngine;
public class Bullet : MonoBehaviour
{
public float speed = 20f; // 총알 속도
public Rigidbody2D rb;
void Start()
{
rb.velocity = transform.up * speed; // 총알을 앞으로 이동
}
void OnTriggerEnter2D(Collider2D hitInfo)
{
// 충돌 시 총알 제거 (적 처리는 나중에 구현 예정)
Destroy(gameObject);
}
}
- Bullet 오브젝트에 Bullet 스크립트를 추가합니다.
- Rigidbody2D 컴포넌트를 rb 필드에 연결합니다.
2.2 플레이어가 총알 발사하도록 설정
이제 플레이어의 마우스 클릭 시 총알을 발사하는 기능을 구현하겠습니다.
- PlayerShooting 스크립트 작성
- PlayerShooting.cs 스크립트를 생성하고, 다음과 같이 작성합니다:
using UnityEngine;
public class PlayerShooting : MonoBehaviour
{
public Transform firePoint; // 총알이 발사될 위치
public GameObject bulletPrefab; // 총알 프리팹
void Update()
{
// 왼쪽 마우스 버튼 클릭 시 발사
if (Input.GetButtonDown("Fire1"))
{
Shoot();
}
}
void Shoot()
{
Instantiate(bulletPrefab, firePoint.position, firePoint.rotation);
}
}
- firePoint 위치 설정
- Player 오브젝트의 자식 오브젝트로 firePoint 위치를 생성합니다.
- Hierarchy 창에서 Player를 선택하고, Right-click > Create Empty로 빈 오브젝트를 추가하여 firePoint로 이름을 지정합니다.
- firePoint를 플레이어의 앞쪽에 위치하도록 조정합니다.
- Player 오브젝트에 스크립트 추가
- PlayerShooting 스크립트를 Player 오브젝트에 추가합니다.
- firePoint와 bulletPrefab 필드에 각각 firePoint 오브젝트와 Bullet 프리팹을 연결합니다.
3. 총알 프리팹으로 저장하기
- Bullet 오브젝트를 Prefabs 폴더로 드래그하여 프리팹으로 저장한 뒤, Hierarchy에서 삭제합니다.
- 이렇게 하면 나중에 Instantiate 함수로 총알을 생성할 수 있습니다.
4. 테스트 및 조정
- Play 모드로 게임 실행:
- 마우스 왼쪽 버튼을 클릭하여 플레이어가 총알을 발사할 수 있는지 확인합니다.
- 총알이 설정된 방향과 속도로 이동하고, 화면 밖으로 나가면 사라지는지 확인합니다.
- 속도와 발사 빈도 조정:
- Bullet 스크립트에서 speed 값을 조정하여 속도를 변경해 보세요.
- PlayerShooting 스크립트에서 Shoot() 함수에 쿨타임을 추가해 발사 빈도를 조정할 수도 있습니다.
5. 정리 및 다음 단계 예고
이번 포스팅에서는 플레이어 슈팅 메커니즘을 구현하여, 플레이어가 마우스를 클릭할 때마다 총알이 발사되도록 만들었습니다. 다음 포스팅에서는 적 캐릭터와 기본 AI를 추가하여, 플레이어와 상호작용하는 적들을 생성해보겠습니다.
게임의 재미가 점점 더해질 테니, 계속 함께 만들어가 봅시다!
728x90
'유니티 > 탑 다운 슈팅 게임 만들기' 카테고리의 다른 글
탑다운 슈팅 게임 만들기 #5 – 플레이어와 적의 체력 및 게임 오버 구현 (1) | 2024.11.12 |
---|---|
탑다운 슈팅 게임 만들기 #4 – 적 스폰 시스템 구현하기 (0) | 2024.11.11 |
탑다운 슈팅 게임 만들기 #3 – 적 캐릭터 및 기본 AI 구현 (2) | 2024.11.10 |
탑다운 슈팅 게임 만들기 #1 – 프로젝트 설정 및 플레이어 컨트롤 구현 (2) | 2024.11.08 |
탑다운 슈팅 게임(Top-Down Shooter)이란? (0) | 2024.11.07 |