C#을 사용하여 Unity에서 Canon 게임 만들기

이 튜토리얼에서는 Unity과 C#을 사용하여 간단한 Canon 게임을 만들어 보겠습니다. Unity 프로젝트 설정, 게임 객체 생성, 사용자 입력 처리, 게임 메커니즘 구현의 기본 사항을 배우게 됩니다.

전제조건

따라하려면 다음이 있는지 확인하세요.

  • Unity 컴퓨터에 설치됨(버전 20xx.x 이상)
  • Unity 인터페이스 및 장면 설정에 대한 기본 이해
  • C# 프로그래밍 언어에 대한 지식

프로젝트 설정

새로운 Unity 프로젝트를 설정하는 것으로 시작해 보겠습니다.

  1. Unity Hub를 열고 New를 클릭하여 새 프로젝트를 만듭니다.
  2. 템플릿(3D 또는 2D)을 선택하고 프로젝트 이름을 지정합니다(예: CanonGame).
  3. 만들기를 클릭하여 프로젝트를 만드세요.

Canon GameObject 생성

다음으로 장면에 Canon 개체를 만듭니다.

  1. 계층 패널에서 마우스 오른쪽 버튼을 클릭하고 빈 항목 만들기를 선택하여 새 GameObject를 만듭니다.
  2. GameObject의 이름을 "Canon"으로 바꿉니다.
  3. 계층 구조에서 "Canon"을 마우스 오른쪽 버튼으로 클릭하고 3D 객체 -> 원통를 선택하여 캐논에 대한 원통 모양을 만듭니다.
  4. 원통의 위치와 크기를 대포처럼 조정합니다.

C#으로 Canon 스크립트 작성

이제 캐논을 제어하는 ​​스크립트를 작성해 보겠습니다.

  1. 프로젝트 패널에서 "Scripts"이라는 새 폴더를 만듭니다.
  2. "Scripts" 폴더를 마우스 오른쪽 버튼으로 클릭하고 만들기 -> C# 스크립트를 선택합니다.
  3. 스크립트 이름을 "CanonController"로 지정합니다.
  4. 원하는 코드 편집기에서 스크립트를 두 번 클릭하여 엽니다.
using UnityEngine;

public class CanonController : MonoBehaviour
{
    // Variables for canon rotation and firing logic

    void Start()
    {
        // Initialization code
    }

    void Update()
    {
        // Update code (e.g., check for user input)
    }
}

Canon에 기능 추가

캐논을 회전하고 발사하는 기능을 추가해 보겠습니다.

  1. CanonController 스크립트에서 캐논 회전 및 발사를 제어하는 ​​변수를 선언합니다.
  2. Update 메서드에서는 사용자 입력을 처리하여 캐논을 좌우로 회전합니다.
  3. 대포 발사를 처리하는 메서드를 추가합니다(예: 대포알 인스턴스화).
using UnityEngine;

public class CanonController : MonoBehaviour
{
    // Define variables for canon rotation speed
    public float rotationSpeed = 5f;

    // Define variables for cannonball prefab and firing position
    public GameObject cannonballPrefab;  // Assign in Unity Editor
    public Transform firePoint;  // Assign fire point transform in Unity Editor

    void Update()
    {
        // Handle canon rotation based on user input
        float horizontalInput = Input.GetAxis("Horizontal");
        transform.Rotate(Vector3.up, horizontalInput * rotationSpeed * Time.deltaTime);

        // Handle canon firing when spacebar is pressed
        if (Input.GetKeyDown(KeyCode.Space))
        {
            FireCanon();
        }
    }

    void FireCanon()
    {
        // Check if cannonball prefab and fire point are assigned
        if (cannonballPrefab != null && firePoint != null)
        {
            // Instantiate a cannonball at the fire point position and rotation
            GameObject cannonball = Instantiate(cannonballPrefab, firePoint.position, firePoint.rotation);
            
            // Add force to the cannonball (example: forward direction with speed)
            float cannonballSpeed = 10f;
            cannonball.GetComponent<Rigidbody>().velocity = firePoint.forward * cannonballSpeed;
        }
        else
        {
            Debug.LogError("Cannonball prefab or fire point is not assigned.");
        }
    }
}

게임 테스트 및 플레이

이제 Canon 게임을 테스트하고 플레이해 보겠습니다.

  1. 스크립트를 저장하고 Unity로 돌아갑니다.
  2. CanonController 스크립트를 "Canon" 게임 오브젝트의 인스펙터 패널로 끌어서 놓아서 "Canon" 게임 오브젝트에 연결합니다.
  3. 게임을 실행하려면 Unity에 있는 재생 버튼을 누르세요.
  4. 캐논을 회전하려면 화살표 키나 A/D 키를 사용하세요.
  5. 스페이스바를 눌러 대포를 발사합니다(이 기능을 구현하는 것은 스크립트에 따라 선택 사항입니다).

결론

축하해요! C#을 사용하여 Unity에서 간단한 Canon 게임을 만들었습니다. Unity 프로젝트를 설정하고, GameObject를 생성하고, C#으로 스크립트를 작성하고, 기본 게임 메커니즘을 구현하는 방법을 배웠습니다. 여기에서 게임을 더욱 확장하고 향상시킬 수 있습니다.