on
3. 리지드 바디
3. 리지드 바디
우선 큐브에 Add Component -> rigid body라고 검색해서 추가하고 시작!
Mass : 질량. 질량 높을수록 관성, 속도에 영향. 그리고 충돌했을때 질량이 큰 쪽이 작은쪽을 밀것이다.
Drag : 저항, 공기저항. 우주공간은 0이다. 1은 저항이 높아서 천천히 떨어지게 된다. 0일때는 원래속도.
Angular Drag : 회전값에 대한 저항. 빠르게 회전하는 물체에 Angular Drag를 높이면 빠르게 감속한다. 높으면 높을수록 빨리 멈춘다.
Use Gravity : 체크가 되어있다. 이건 중력이 적용된다는 뜻인데 실행시켜보면 아래로 뚝 떨어진다. (중력적용)
Is Kinematic : 이걸 체크하면 물리효과를 없앤다. 중력, 관성, 충돌 적용되지 않는다. 물리효과 없애고 싶을 때 사용
Interpolate : 캐릭터의 움직임이 부자연스러울때 보완하는 방법. 이전 프레임의 움직임을 통해 다음 프레임을 자연스럽게 만든다. (extrapolate : 다음 프레임의 움직임을 예측하는것, 그래서 부드럽게 유지시키는 거), 보통은 none한다.
collision detection : discrete가 기본값. 충돌했으면 충돌했다. continuous, continous dynamic은 총알같은 아이에게 적용. 너무 빨라서 정밀한 물리효과 필요할때 적용시켜주기.
constraints : position과 rotation을 freeze시킨다. x, y, z 체크하면 고정된다. 중력적용이 되지 않는다. rotation은 각도멈춤
Edit -> project setting -> physics하면 나타난다. 여기보면 y의 값이 -9.81이다. 그만큼 중력이 적용된다는 의미
1 > velocity
Rigidbody : 속도, 현재속도알수있다, 폭파효과 등 물리효과만들어낼수있다.
myRigid.position : transform의 position과 비슷
myRigid.velocity : 게임오브젝트의 현재 움직이는 속도를 의미한다.
Drag를 1로하면 감속하다가 멈춤(저항때문에 멈춘다.) 2> 회전속도 -Vector3.right : left로 rotation
3> 등등
myRigid.mass : 질량바꾸기
myRigid.drag : 저항바꾸기
myRigid.angularDrag : 회전에 대한 저항
myRigid.maxAngularVelocity : 회전의 최대속도로 변화시킨다. 7이 최대속도다. 따로 바꾸지 않으면 정해져있다.
myRigid.isKinematic : true나 false로 체크
myRigid.useGravity : true나 false로 체크 조절
max값을 바꿔서 빠르게 회전한다.
4> 메소드
myRigid.MovePosition() : 일정방향으로 이동시키는 것, 관성과 질량에 영향받지않고 강제로 이동
myRigid.MoveRotation() : 일정방향으로 회전, 관성과 질량에 영향받지않고 강제로 이동
myRigid.AddForce() : 관성과 질량에 영향을 받음. 특정방향으로 힘을 가한다. Rigidbody 값들의 영향을 받는다.
myRigid.AddTorque() : 회전력이 남아있음. 돌다가 저항때문에 점점 줄어든다.
myRigid.AddExplosionForce() : 가벼워야 멀리 날아가므로 Mass를 줄여준다. Is Kinematic 체크하면 모든 물리효과를 끄기때문에 체크하면 움직이지 않는다. myRigid.AddExplosionForce(10, this.transform.right, 10); explosionForce는 폭발력 세기, explosionPosition은 폭발위치, 폭발반경
from http://2giqq.tistory.com/113 by ccl(A) rewrite - 2021-11-14 23:00:56