본문 바로가기
유니티/탑 다운 슈팅 게임 만들기

탑다운 슈팅 게임 만들기 #1 – 프로젝트 설정 및 플레이어 컨트롤 구현

by 찡사랑방 2024. 11. 8.
728x90
728x90

 

안녕하세요! 이번 포스팅에서는 탑다운 슈팅 게임(Top-Down Shooter) 제작의 첫 번째 단계로, 유니티 프로젝트 설정 플레이어 컨트롤을 구현해보겠습니다. 이 게임에서는 2D 환경에서 플레이어가 자유롭게 움직이고, 마우스 방향을 바라보며 공격할 수 있도록 만드는 것이 목표입니다.


1. 프로젝트 설정

1.1 유니티 프로젝트 생성

  1. **유니티 허브(Unity Hub)**를 열고, **새로운 프로젝트(New Project)**를 만듭니다.
  2. 템플릿에서 2D를 선택하고 프로젝트 이름을 TopDownShooter로 설정합니다.
  3. Create Project 버튼을 눌러 프로젝트를 생성합니다.

1.2 기본 설정

  1. Main Camera 설정:
    • Background Color를 원하는 색상(예: 검은색 또는 어두운 회색)으로 변경합니다.
    • Size 5로 설정하여 적당한 뷰포트를 제공합니다.
  2. Assets 폴더 구성:
    • Assets > Create > Folder로 필요한 폴더를 생성합니다:
      • Scripts: 스크립트 파일 저장.
      • Sprites: 게임 오브젝트에 사용할 이미지.
      • Prefabs: 자주 재사용될 오브젝트.

2. 플레이어 오브젝트 생성

2.1 플레이어 스프라이트 추가

  1. 간단한 플레이어 이미지를 준비하거나 유니티의 기본 도형(예: Circle)을 사용합니다.
    • Hierarchy 창에서 2D Object > Sprite를 선택하여 새 오브젝트를 생성합니다.
    • 오브젝트 이름을 Player로 변경합니다.
  2. 플레이어의 Sprite Renderer에 스프라이트 이미지를 할당합니다.

2.2 플레이어 이동 구현

  1. PlayerMovement 스크립트 작성
    • Assets > Scripts 폴더에 PlayerMovement.cs 스크립트를 생성합니다.
    • 아래 코드를 작성하여 플레이어가 WASD 키로 움직이도록 설정합니다.
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f; // 이동 속도
    public Rigidbody2D rb; // Rigidbody2D 참조
    private Vector2 movement;

    void Update()
    {
        // 입력 처리
        movement.x = Input.GetAxisRaw("Horizontal");
        movement.y = Input.GetAxisRaw("Vertical");
    }

    void FixedUpdate()
    {
        // 물리 이동
        rb.MovePosition(rb.position + movement * moveSpeed * Time.fixedDeltaTime);
    }
}

 

2. Rigidbody2D 컴포넌트 추가

  • Player 오브젝트를 선택하고 Add Component > Rigidbody2D를 추가합니다.
  • Body Type Kinematic으로 설정하여 물리 충돌 없이 움직일 수 있도록 만듭니다.

3. PlayerMovement 연결

  • Player 오브젝트에 PlayerMovement 스크립트를 추가하고, Rigidbody2D를 드래그하여 rb 필드에 연결합니다.

3. 마우스를 따라 플레이어 회전

3-1 플레이어 회전 스크립트 작성

  • 플레이어가 마우스 위치를 바라보도록 설정하려면, 다음과 같이 PlayerLook 스크립트를 작성합니다:
using UnityEngine;

public class PlayerLook : MonoBehaviour
{
    public Camera cam; // 카메라 참조
    private Vector2 mousePos;

    void Update()
    {
        // 마우스 위치 가져오기
        mousePos = cam.ScreenToWorldPoint(Input.mousePosition);
    }

    void FixedUpdate()
    {
        // 플레이어 회전
        Vector2 lookDir = mousePos - (Vector2)transform.position;
        float angle = Mathf.Atan2(lookDir.y, lookDir.x) * Mathf.Rad2Deg - 90f;
        transform.rotation = Quaternion.Euler(0, 0, angle);
    }
}

 

3-2 카메라 연결

  1. PlayerLook 스크립트를 Player 오브젝트에 추가합니다.
  2. Camera Main Camera로 드래그하여 cam 필드에 연결합니다.

4. 테스트 및 조정

  1. Play 모드로 게임 실행
    • WASD 키로 플레이어가 움직이고, 마우스 방향을 향해 회전하는지 확인합니다.
  2. 이동 속도 및 회전 조정
    • PlayerMovement PlayerLook 스크립트의 속성값을 조정하여 이동 속도와 회전감을 최적화합니다.

5. 정리 및 다음 단계 예고

이번 포스팅에서는 프로젝트 설정 플레이어 컨트롤을 구현하여 게임의 기본 틀을 만들었습니다. 다음 포스팅에서는 플레이어의 슈팅 메커니즘을 구현하여 총알을 발사하고 적을 공격할 수 있도록 만들어 보겠습니다.

계속해서 여러분의 멋진 탑다운 슈팅 게임을 완성해 나갑시다!

 
728x90