반응형
//Rigidbody.velocity로 움직이기
void MoveOnRigidVelocity()
{
float h = Input.GetAxis("Mouse X") *rotatespeed;
float v = Input.GetAxis("Vertical") * speed;
Vector3 move = transform.forward*v;
Vector3 rotate = new Vector3(0, h, 0);
rigid.velocity = move;
rigid.rotation *= Quaternion.Euler(rotate);
if (Input.GetKeyDown(KeyCode.LeftShift))
speed += accspeed;
else if (Input.GetKeyUp(KeyCode.LeftShift))
speed = accspeed;
Input.GetAxis를 사용하여 입력된 값을 float h에 저장해준다.
참고로 Input.GetAxis는 입력을 했냐 안했냐를 구분하는 bool 형태가 아니라.
-1부터 1까지 값을 받아오는 float형태이다. 키보드는 입력을 했거나 안 했거나 둘 중 하나이지만
콘솔은 미는 '정도'를 계산할 수 있도록 사이값을 받아올 수 있는 float으로 받아 온 것이다.
입력을 했다면 h= 1 * speed 값이 들어가고 rotate는 Vector3 형태로 이 값을 저장하였다가.
rigid.velocity에 값을 넣어준다.
마우스의 좌우 이동 값으로 회전을 구현해 보고 싶어서 Input.GetAxis("Mouse X")를 넣고 rotate를
구현해 봤다. 좌우 키로 이동이 안 되는 게 불편했지만 이런 구현 방법도 있다는 것이 궁금해서 해보았다.
rigid.velocity는 rigid.addforce와 다르게 즉각적인 움직임이 가능하다.
addforce는 질량에 의한 움직임으로 관성이 작용한다.
velocity는 질량을 무시하고 직접적으로 속도를 변화하여 즉각적인 움직임이 가능하다.
반응형
'Unity' 카테고리의 다른 글
[Unity] 레이캐스트(RayCast) 정리 (0) | 2021.06.25 |
---|---|
[Uinty3D] 마우스 클릭 좌표 구하기 (2) | 2021.06.25 |
[Unity] float사용에 유의점 (0) | 2021.05.15 |
Unity(2)- GetAxisRaw를 사용하여 오브젝트 이동시키는 방법 (0) | 2020.09.01 |
Unity(1)-오브젝트 이동시키기 (0) | 2020.08.31 |