Unity 기초가이드3-1 : 오브젝트의 회전값, 마우스 좌우로만 이동
개요
Unity 기본 개념 정리
내용 - Unity C# script 정리
1. 위로 이동
transform.position += Vector3.up * 0.5f;
2. 자동으로 먹이를 생성하는 Dog 클래스
public class Dog : MonoBehaviour
{
public GameObject food;
void Start()
{
InvokeRepeating("MakeFood", 0.0f, 0.2f);
}
void MakeFood()
{
float x = transform.position.x;
float y = transform.position.y + 2.0f;
Instantiate(food, new Vector2(x, y), Quaternion.identity);
}
}
코드해석
public GameObject food; : 생성할 오브젝트(먹이)를 참조하기 위한 변수입니다.
InvokeRepeating("MakeFood", 0.0f, 0.2f); : Start() 함수 내에서 사용되는 이 메서드는 MakeFood 함수를 0.2초 간격으로 반복 호출합니다. 0.0f는 첫 호출이 즉시 이루어지도록 설정합니다.
Instantiate() : 이 함수는 Unity에서 새로운 게임 오브젝트를 생성할 때 사용됩니다.
food : 생성할 오브젝트의 프리팹입니다. 이 프리팹은 public GameObject food;에서 정의된 변수로, Unity 에디터에서 할당됩니다.
Quaternion.identity : 생성된 오브젝트의 회전값을 설정합니다. Quaternion.identity는 기본값으로, 회전 없이 오브젝트를 생성합니다.
3. 마우스 좌우로만 따라 움직이기
void Update()
{
Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
transform.position = new Vector2(mousePos.x, transform.position.y);
}
코드해석
Camera.main.ScreenToWorldPoint() : 이 함수는 화면 좌표(픽셀 단위)를 월드 좌표(게임 내 실제 위치)로 변환합니다. 마우스 커서의 위치는 화면 좌표로 제공되기 때문에, 이를 게임 오브젝트의 월드 좌표로 변환하기 위해 사용됩니다.
Input.mousePosition : 현재 마우스 커서의 위치를 화면 좌표로 가져옵니다. mousePos는 변환된 월드 좌표를 담고 있으며, 이 좌표를 이용해 오브젝트의 위치를 조정할 수 있습니다.
transform.position = new Vector2(mousePos.x, transform.position.y); :
1. 이 줄은 오브젝트의 위치를 업데이트하는 역할을 합니다.
2. new Vector2(mousePos.x, transform.position.y) : 이 코드는 오브젝트의 X축 위치를 마우스의 X축 위치(mousePos.x)로 설정하고, Y축 위치는 변경하지 않고 그대로 유지합니다. 즉, 오브젝트가 마우스의 X축 움직임을 따라 수평으로만 이동하게 됩니다.