unity/개발
게임오브젝트의 이동 및 회전 1
그린티라떼
2020. 10. 22. 18:35
게임오브젝트의 이동 및 회전시킬 때 크게 두 가지 방법으로 Transform 컴포넌트와 물리엔진(PhysX, Box2D)이 있다.
이 글에서는
InputManager 이용, Transform 컴포넌트 이용
변수 선언
private float h = 0.0f;
private float v = 0.0f;
private float r = 0.0f;
//이동 속도 변수
public float moveSpeed = 10.0f;
//회전 속도 변수
public float rotSpeed = 80.0f;
이동 로직
void Update()
{
h = Input.GetAxis("Horizontal");
v = Input.GetAxis("Vertical");
r = Input.GetAxis("Mouse X");
//전후좌우 이동 방향 벡터 계산
Vector3 moveDir = (Vector3.forward * v) + (Vector3.right * h);
//(이동방향 * 속도 * 변위값 * time.deltatime, 기준 좌표)
tr.Translate(moveDir.normalized * moveSpeed * Time.deltaTime, Space.Self);
//Vector3.up 축을 기준으로 rotSpeed만큼의속도로 회전
tr.Rotate(Vector3.up * rotSpeed * Time.deltaTime * r);
}
-GetAxis
Input.GetAxis("Horizontal") : -1.0f ~ +1.0f 범위의 값 반환
Input.GetAxisRaw("Horizontal") : -1 ,0 ,+1 세 가지 값 반환
-Vector3 데이터 타입
nomalized : 크기가 1인 벡터, 정규화 벡터, 방향을 나타내는 벡터
magnitude : 벡터의 길이
sqrMagnitude : 벡터의 길이의 제곱근
<참고자료>
이재현, 절대강좌! 유니티