GameObject는 움직이는데 카메라는 움직이지 않는 경우가 있다.
그럴 때 어떻게 해야할까?
마치 이렇게..
Main Camera를 어떻게좀 해야겠지..?
그래서 스크립트를 하나 만들자.
"FollowPlayer"라고 이름지어서 만들자.
항상 스크립트 제목은 명확하게 뭔지 알 수 있게 지어야한다.
짧게가 아니라! 뭔 스크립트인지 알 수 있게 !! 그 후 짧게 짓는 것이다.
public GameObject player; // subject
// Start is called before the first frame update
void Start()
{
}
// Update is called once per frame
void Update()
{
transform.position = player.transform.position; // left variable has belong the things that have this script
}
딱 이렇게 지어주자.
GameObject는 우리가 수동으로 지정해줄 것이므로 Public 선언해줬고
저기 Update 에서는
player라는 GameObject의 Position을 매 프레임마다 할당해줄 것이다.
어디에?? 이 스크립트를 가지고 있는 Gameobject의 Position에게
그러면 이 스크립트는 누가 가지고 있어야할까? 바로 Main Camera ㄱㄱ
했더니??
엥... GameObject와 같은 위치에 지정해주니까 저러네..? 조금 더 위에 있으면 좋겠는디.. GTA5처럼?
그러면 저 코드에서 좀 수정해주면 되겠지??
3D에서는 Y좌표가 Vertical property를 결정한다. 즉.. position.y를 잘 수정해주면 되겠다.
X,Z가 Horizontal property를 결정한다.
조금 뒤쪽 위에서 바라보게 만들자 ㅇㅋ?
즉 offset을 주는 것이다. 임의로 수치를 조정하는 것을 offset이라 한다.
void Update()
{
transform.position = player.transform.position + new Vector3(0, 5.5f, -8); // left variable has belong the things that have this script
}
왜 new Vector3를 선언했느냐??
transfrom.postion의 type이 바로 Vector3이다.
Typecast를 하지 않을 거면 같은 타입으로 맞춰줘야 연산이 가능하겠지??
결과를 보자
오 잘움직이네??
나머지 맘에 안들면 저런 방식으로 알아서 고쳐주자
** 항상 무엇인가 대입할 때 직접 숫자를 넣어서 대입하는 것은 제일 안좋은 습관이다.. 왜냐면.. 그 값이 쓰이는 곳이 2군데 이상이면 나중에 고치려면 2군데를 찾아서 고쳐야하니까..ㅎ
변수로 선언해서 offset 같은 것으로 따로 저장해두자
그럼 20000
'Game Development, 게임개발 > 개발' 카테고리의 다른 글
GameObject를 입력받아서 방향대로 움직이기 [Unity 3D] (0) | 2021.02.23 |
---|---|
Play 중인지 아닌지 쉽게 구별하기, Preferences[Unity] (2) | 2021.02.23 |
SerializeField의 개념 [Unity] (7) | 2020.04.15 |
[Unity] 2D에서 충돌하면 떨어뜨리기 (0) | 2020.03.29 |
[Unity] 2D에서 자석 구현하기 !! (6) | 2020.03.13 |