부모와 자식
Coddy Unity 여정의 Unity 스크립팅 기초 섹션에 포함된 레슨. 85개 중 31번째.
계층 구조에서 오브젝트를 다른 오브젝트 위로 드래그하면 그 오브젝트의 자식이 되고, 부모 아래에 들여쓰기되어 표시됩니다. 자식은 부모와 함께 이동하고 회전하며 크기가 조정됩니다. 부모를 움직이면 자식마다 코드를 작성하지 않아도 모든 자식이 함께 따라옵니다.
Unity는 자식의 위치를 부모를 기준으로 저장합니다. transform.localPosition은 부모를 기준으로 측정한 오프셋이고, transform.position은 월드 공간에서의 위치입니다. 이 기수는 말의 자식이며, 스크립트는 말이 어디에 있든 기수를 말의 중심보다 1단위 위, 뒤쪽으로 반 단위 떨어진 위치에 앉힙니다.
void Start()
{
transform.localPosition = new Vector3(0, 1, -0.5f);
}말이 (4, 0.5, 2)에 있을 때 기수의 position은 (4, 1.5, 1.5)이고, localPosition은 (0, 1, -0.5)로 유지됩니다. 말이 계속 걸어가면 position은 바뀌지만 localPosition은 바뀌지 않습니다. 오프셋은 부모 자체의 축을 따라 측정되므로, 부모가 회전하거나 크기가 조정되면 오프셋도 함께 회전하고 크기가 조정됩니다. 부모가 없는 오브젝트의 경우 localPosition과 position은 같습니다.
챌린지
중급깃발을 배를 기준으로 측정한 돛대 밑부분에 놓으세요.
Start()에서 숫자 (0.6, 1, 0)는 깃발의 부모인 Ship을 기준으로 측정됩니다.- 해당 줄에서
transform.position을transform.localPosition으로 바꾸세요.
‘플레이’를 누르세요. 깃발이 배 위 돛대 밑부분에 놓입니다. 그런 다음 ‘확인’을 누르세요.
직접 해보기
using UnityEngine;
public class Hoist : MonoBehaviour
{
public float climb = 1f;
void Start()
{
// 돛대의 밑부분: Ship을 기준으로 오른쪽으로 0.6, 위로 1
transform.position = new Vector3(0.6f, 1, 0);
}
void Update()
{
// 위쪽 화살표 키를 누르고 있는 동안 Ship으로부터의 높이가 4가 될 때까지 올라갑니다
}
}
Unity 스크립팅 기초의 모든 레슨
직접 연습해 보세요: Unity 플레이그라운드