cube object에 rigid body component를 추가해준다.
rigid body란 물리효과를 보여주는 애이다. 대표적인 예로 gravity가 있는데, 이걸 체크해주면 큐브가 아래로 추락하게 된다.
edit > project settings> physics에 들어가면 나오는 화면은 아래와 같음.
gravity의 x,y,z값 조절이 가능함.
[rigidbody의 구성요소]
- mass(질량): 질량이 높을수록 관성이라던지, 속도에 영향을 받는다. 질량이 다른 물체가 충돌했을 때, 질량이 큰 물체가 질량이 작은 물체를 밀어버린다.
- drag: 공기저항과 같은 것. (drag = 0이면 우주공간 // drag값의 차이에 따라 떨어지는 속도에 차이가 있음)
- angular drag: 회전값에 대한 저항 (angular drag값이 크면 회전이 빠르게 멈추게 됨.)
- Use Gravity: 중력 사용여부
- Is Kinematic: 물리효과 사용여부
- Interpolate: character의 움직임이 부자연스러울 때, 보간하여 자연스럽게 만드는것. (보통은 큰 차이가 없기 때문에 잘 사용하지 않음)
- Collision Detection: 충돌 탐지기. (descrete - 충돌하면 그냥 충돌했구나 정도 / Continuous - 매우 빠른 스피드를 지닌 총알 같은 것에 적용하면 좋음)
- Constraints: position, rotation을 freeze할 수 있음 (중력이 적용되지 않음)
위의 코드처럼 velocity를 이용하여 objcet의 속도를 조절해줄 수 있다.
위의 코드를 활용하면 object를 회전하게 할 수 있다.
[이외 자주 쓰이는 리지드바디 속성들]
mass = 질량을 바꿀 수 있다.
drag = 저항을 바꿀 수 있다.
angularDrag = 회전에 대한 저항을 바꿀 수 있다.
maxAngularVelocity = 회전의 최대속도로 변경시키는 것 (default값 = 7)
isKinematic, useGravity : 각각 true, false로 설정할 수 있다.
[리지드 바디의 대표젹인 method]
MovePosition() : 일정방향으로 이동시키는 것
ex. myRigid.MovePosition(transform.forward); --> 앞으로 이동시키는 코드임
위의 코드는 MoveRotation()을 이용해서, w키를 눌렀을 때만 큐브가 회전하도록 한 것이다. (w키를 떼면, 큐브는 더이상 회전하지 않음)
--> MovePosition(), MoveRotation()은 관성과 질량의 영향을 받지 않는다.
관성과 질량에 영향을 받도록 하려면,
위와 같이 코드를 작성하면 된다. 이렇게 AddForce를 이용하면, 관성과 질량에 영향을 받기 때문에, w키를 누르지 않았을 때 바로 멈추는 것이 아니라 천천히 감속하면서 멈추게 된다. 그리고 AddForce는 질량이 더 가벼운 물체가 더 빠르게 움직이도록 한다.
비슷하게, AddTorque의 경우에도, 키를 더이상 누르지 않게하면, 바로 멈추는 것이 아니라 일정한 회전력이 남아있도록 한다.
myRigid.AddTorque(Vector3.up); 과 같이 활용한다. (y축 - up 기준 회전하도록)
이외에도,
AddExplosionForce(폭발력 세기, 폭발 위치, 폭발 반경) : 폭발 등을 구현 시에 유용
ex. myRigid.AddExplosionForce(10, this.transform.right, 10);
-->10의 크기로 폭발해서, 왼쪽으로 날라가도록(오른쪽에서 폭발하니까 왼쪽으로 날라감), 반경 10 안에 있는 것들이 폭발 (+@ 질량이 가벼울수록 더 멀리 날라감)
Add~~: 물리효과와 관계가 있음. (중력, 저항 등등)
Move~~: 강제로 이동시키는 것이라, 물리효과와 관계가 없음.
'졸업프로젝트' 카테고리의 다른 글
유니티 기본강좌_5. 메쉬 렌더러 (0) | 2021.11.24 |
---|---|
유니티 기본강좌_4.컬라이더 (0) | 2021.11.23 |
유니티 기본강좌_2. 트랜스폼 (0) | 2021.11.22 |
유니티 기본강좌 _ 1. 게임 object (0) | 2021.11.19 |
유니티 기본강좌 _ 0. 유니티 기본 UI 정리 (0) | 2021.11.19 |