rigidbody는 물리효과에 대한 컴포넌트이다.
Rigidbody rigid;
void Start()
{
rigid = GetComponent<Rigidbody>(); //괄호 안 타입의 컴포넌트를 가져온다.
//2D에서 3D Rigidbody를 쓰면 적용이 안됨.
rigid.velocity = new Vector3(0, 1, 0); //현재 이동속도
Rigidbody 객체를 만들고 GetComponent로 가져온다.
velocity는 속도에 대한 프로퍼티로, Vector3.left/right를 주면 좌 우로 움직이고
사용자가 new Vector3(x, y, z)로 직접 값을 지정할 수도 있다.
void FixedUpdate()
{
rigid.velocity = new Vector3(2, 3, 1);
}
Rigidbody 관련 코드를 업데이트에서 사용할 때는
FixedUpdate에서 작성한다.
rigid.AddForce(Vector3.up * 5, ForceMode.Impulse); // ForceMode : 힘을 주는 방식(가속, 무게 반영)
AddForce로 직접 힘을 가할 수도 있다.
void FixedUpdate()
{
if (Input.GetButtonDown("Jump"))
{
rigid.AddForce(Vector3.up * 5, ForceMode.Impulse); // ForceMode : 힘을 주는 방식(가속, 무게 반영)
}
}
RigidBody를 활용해서 점프 구현.
Vector3 vec = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
rigid.AddForce(vec, ForceMode.Impulse);
RigidBody를 이용한 좌우 이동
GetAxisRaw값을 이용해서 힘을 가한다.
이 컴포넌트를 사용한 이동은 보다 자연스럽다.
rigid.AddTorque(Vector3.up);
AddTorque는 회전에 대한 옵션을 제공한다.
'유니티' 카테고리의 다른 글
유니티 물리충돌 이벤트 (1) | 2019.11.07 |
---|---|
유니티 오브젝트 충돌 관련 컴포넌트 (1) | 2019.11.03 |
유니티 목표지점으로 이동하기 (1) | 2019.11.02 |
유니티 키입력, 이동 (0) | 2019.11.02 |
유니티 라이프 사이클 (0) | 2019.11.02 |