본문 바로가기
UNITY/Basic

Player basic move

by neohtux 2016. 11. 21.
728x90

□ Vector3

 


◆ 방향을 지시하는 용도로 사용할 때는(x,y,z)값을 0과 1로 표시한다. 각 방향에 대한 상수값을 사용할 수도 있다.

◆ 거리를 지시하는 용도로 사용할 때는 (x,y,z) 값을 해당 크기 만큼 표시한다.




.벡터3(Vector3)는 오브젝트의 이동 방향을 지시하거나 이동 거리, 회전을 표시할 때 사용한다.




□ 프레임 시간의 보정


Update 메서드는 iOS나 안드로이드 모바일 기기에서는 1초당 최대 60프레임이 호출된다.

그런데 Update 메서드가 호출되는 횟수가 모든 기기에서 정확하게 똑같지는 않다.

Update 메서드에서 처리하는 내용이 많은 경우 최신 기기는 빠르게 처리해 초당 60번 호출하는 데 문제가 없을 수 있지만,

오래된 기기는 성능이 떨어져 초당 20프레임만 호출할 수도 있다.


ex)

A : 초당 20프레임이 나오는 기기 사용 -> 초당 20m 이동

B : 초당 10프레임이 나오는 기기 사용 -> 초당 10m 이동

 


게임에서 이렇게 작동한다면 좋은 기기를 가진 사람이 무조건 이길 수 밖에 없다. 이런 값을 보정하기 위한 값이


델타 타임(deltaTime)이다. 델타 타임은 Update 메서드의 현재 호출 시각과 이전 호출 시각의 차이 값을 반환한다.

그러므로 A는 델타 타임 값이 작고, B는 델타 타임 값이 크다. 따라서 이렇게 함으로써 이동하는 거리가 같아진다.



A는 델타 타임 값이 작아서 가까운 거리를 자주 이동해 B보다 자연스럽게 이동하지만, B는 델타 타임 값이

크므로 먼 거리를 가끔 이동한다. 그러므로 B는 A와 비교했을 때 화면상에서 이동할 때 뚝뚝 끊어지면서


이동하는 것처럼 보일 수 있다.




※ 노트

 - 이렇게 델타 타임으로 보정을 하면 이동 거리는 같아지지만, 이동 거리가 작아지므로, 6번째 줄의 speed 값을 곱해

한 번 더 보정해 값을 키워준 것이다. 이 값은 정해진 값이 아니고 프로그래머가 보기에 적당한 값으로 설정하면 된다.

실행해 보고 너무 빠르게 이동하면 값을 줄이고, 너무 느리게 이동한다 싶으면 값을 키우면 된다.






300x250

'UNITY > Basic' 카테고리의 다른 글

Vector3의 magnitude와 normalized  (0) 2020.06.30
Jump  (0) 2016.12.28
Throw  (0) 2016.12.28
identity(회전 일치)  (0) 2016.12.27
Rotate  (0) 2016.12.27

댓글