본문 바로가기

유니티

[유니티/Unity] 물체 이동

반응형

 

이번 포스팅 주제는 총알 오브젝트를 특정 힘과 방향으로 발사하는 기능을 구현하는 과정에서 알게된 내용입니다.




유니티에서 제공하는 rigidbody를 사용하여 물체가 특정 속도로 날아가도록 할 수 있습니다. 다음은 가장 많이 사용하는 두가지 방법입니다.


Velocity : rigidbody의 속도를 나타냅니다. velocity를 지정하면 오브젝트의 질량과 상관없이 일정 속도를 줍니다.

rigidbody2d 컴포넌트가 있어야만 velocity를 사용할 수 있습니다.  아래와 같이 x,y 의 속도를 지정할 수 있습니다.

 

Rigidbody2D.velocity = new Vector2(xSpeed, ySpeed);



Addforce : rigidbody에 힘을 가해 가속도를 줍니다. addforce는 'F=ma' 공식이 적용되어 같은 힘을 주었을때 오브젝트의 질량에 따라 가속도가 달라집니다. 


Vector3 vector= Quaternion.AngleAxis(angle, Vector3.forward) * Vector3.right;

rigidbody2d.AddForce(vector * speed);

 

  • angle : 힘을 가해줄 각도 값입니다.
  • speed : 속도 값입니다.
addforce를 사용하여 물체의 속도를 줄때 rigidbody의 옵션들을 사용해 다양하게 구현할 수 있습니다. 관련된 내용은 이전 포스팅을 참고해주세요.

그 외에도 rigidbody와 함께 자주 사용되는 material에 'Friction' 과 'Bounciness' 과 있습니다. 해당 옵션은 각 마찰력과 탄성력으로 colider 컴포넌트를 갖고 있는 오브젝트에 추가해서 사용할 수 있습니다.
각각 0~1 의 값을 설정할 수 있는데, 마찰력은 다른 물체와 접촉했을때 나타나지만 해당 포스팅을 작성할때는 1 과 0 의 차이를 크게 못 느꼈습니다. 
대신에 rigidbody의 linear drag(선형 저항) 를 활용하는게 확실한 것 같습니다.

씬안의 크기 단위를 Unit이라 하는데 transform으로 지정한 좌표 1당 1unit 이며, mass는 1당 1kg 입니다.




해당 포스팅은 지극히 주관적인 내용으로 저자의 복기 목적으로 작성된 것이고, 내용에대해 수정이나 추가 요청은 언제든 환영합니다. 







반응형