유니티_unity

(유니티) 프리팹 Prefab: 마우스 버튼을 클릭한 자리에 프리팹 출력하기

코딩ABC 2024. 4. 9. 17:08
반응형

유니티의 프리팹(prefab)을 다루는 예제입니다.

마우스를 클릭한 자리에 프리팹을 출력하는 코드를 작성해 보겠습니다.

프리팹은 자동차가 앞으로 이동하는 간단한 기능으로 구현합니다.

 

1. 프로젝트를 생성합니다 - 여기서는 2D로 생성했습니다.

 

2. 아래의 이미지를 Assets으로 가져옵니다.

이미지를 "car.png"로 저장합니다.

car.png

 

3. 자동차 이미지를 씬(scene)에 배치합니다.

4. C# 스크립트를 생성하고, 이름을 "CarController"로 변경합니다.

자동차를 앞으로 이동하는 코드를 작성하고, "car"와 연결합니다.

 

5. 실행합니다 - 자동차가 앞으로 이동합니다.

using UnityEngine;

public class CarController : MonoBehaviour
{
    private Camera mainCamera;

    // Start is called before the first frame update
    void Start()
    {
        Application.targetFrameRate = 60;

        mainCamera = Camera.main; // 게임에서 메인 카메라 가져오기
    }

    // Update is called once per frame
    void Update()
    {
        transform.Translate(0.1f, 0, 0);

        // 시야 영역을 벗어나면 제거
        Vector3 viewPos = mainCamera.WorldToViewportPoint(transform.position);
        if (viewPos.x < 0 || viewPos.x > 1 || viewPos.y < 0 || viewPos.y > 1)
        {
            Destroy(gameObject);
        }
    }
}

 

6. 프리팹을 만듭니다.

Hierarchy 창에서 car를 Project 창의 Assets으로 끌어다 놓으면 됩니다.

이름을 "carPrefab"으로 변경합니다.

유니티, 프리팹

7. Hierarchy 창의 "car"는 삭제합니다.

 

8. 마우스를 클릭한 자리에 프리팹을 출력하는 코드를 작성합니다.

C# 스크립트를 생성하고, 이름을 "CarGenerator"로 변경합니다.

코드를 작성합니다.

using UnityEngine;

public class CarGenerator : MonoBehaviour
{
    public GameObject carPrefab; // 생성할 프리팹

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 마우스 왼쪽 버튼을 클릭했을 때
        if (Input.GetMouseButtonDown(0))
        {
            // 마우스 클릭한 위치 가져오기
            Vector3 clickPosition = Camera.main.ScreenToWorldPoint(Input.mousePosition);
            clickPosition.z = 0f; // z축 위치를 0으로 설정 (2D 게임을 가정)

            // 프리팹 생성
            Instantiate(carPrefab, clickPosition, Quaternion.identity);
        }
    }
}

 

9. 빈 오브젝트를 한 개 생성합니다 - 이름을 "CarGenerator"라고 변경합니다.

이 오브젝트와 CarGenerator 스크립트를 연결합니다.

 

10. Hierarchy 창에서 CarGenerator를 선택하고, Inspector 창에서 "Car Prefab"를 찾아서 프리팹을 연결합니다.

 

11. 실행합니다.

 

유니티, 프리팹

 

반응형