반응형
유니티의 프리팹(prefab)을 다루는 예제입니다.
마우스를 클릭한 자리에 프리팹을 출력하는 코드를 작성해 보겠습니다.
프리팹은 자동차가 앞으로 이동하는 간단한 기능으로 구현합니다.
1. 프로젝트를 생성합니다 - 여기서는 2D로 생성했습니다.
2. 아래의 이미지를 Assets으로 가져옵니다.
이미지를 "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. 실행합니다.
반응형
'유니티_unity' 카테고리의 다른 글
(유니티) 룰렛이 멈추는 위치의 문자열 출력하기 (0) | 2024.05.06 |
---|---|
(유니티) 오브젝트가 화면 밖으로 나가면 삭제하기 (0) | 2024.04.09 |
(유니티) 프리팹 Prefab: 하늘에서 개구리가 떨어져요 (0) | 2024.04.04 |
(유니티) 버튼을 클릭하면 TextMeshPro에 1부터 100까지 합을 출력해 보자 (0) | 2024.03.30 |
(유니티) 사운드(Sound. 오디오, 소리) 출력하기 (0) | 2024.03.30 |