만재송
[Cocos Creator] Physics Manager 정복하기(3) - RigidBody 본문
RigidBody 란
리지드바디는 물체의 위치를 제어합니다. 여기서 위치제어는 중력에 영향에 의해 물체를 아래로 떨어지도록 만들고 속도값을 부여해 앞으로 나아가게 할수도 있습니다. 또한 회전값을 주어 회전도 가능하게 할 수 있죠. 리지드바디의 역할은 단순히 물체에 운동성만 부여할 뿐, 충돌과 관련된 일에는 관여하지 않습니다. 처음에 테스트 했었던 터치시 rigidBody Component 가 아닌 Coliider Component 값을 가져오는것도 이유중 하나입니다.
Physics Component 를 추가하면 Collider와 RigidBody Component가 생성됩니다. 여기서 중요한것은 collider 와 rigidbody 의 관계입니다. 다른 컴포넌트이지만 둘은 밀접한 관계를 가지고 있습니다. 왜냐하면 rigidBody를 먼저삭제 할 수 없기 때문입니다. 물리적인 일에 영향을 받는 컴포넌트는 rigidBody 인데 그것을 삭제하면 Collider 는 필요가 없어지기 때문입니다. 혹시나 코드상으로 컴포넌트를 삭제할때 꼭 Collider 를 먼저삭제하고 rigidBody를 삭제하시기 바랍니다.
기능들
rigidBody의 프로퍼티와 메서드를 사용하기 위해 기존 프로젝트에 Orange 스크립트를 만들고 오렌지 노드에 추가해 줍니다.
추가한 Orange스크립트에 rigidBody 컴포넌트를 저장하고 기본세팅을 아래와 같이 합니다.
질량
질량은 밀도와 노드크기에 맞춰서 자동으로 설정됩니다. 힘계산을 할 때 사용할 수 있습니다.
속도
속도는 물체의 이동을 담당합니다.
linearVelocity 는 속도 값을 설정합니다. 초당 이동하는 픽셀 값이며 원하는 x, y 을 설정합니다.
this.rigidBody.linearDamping = 0.5;
linearDamping 은 속도의 댐핑을 설정합니다. 시간에 따라 속도가 감소합니다. 0이상의 값을 넣어야 하며 소수점 단위 입니다.
값을 설정하고 코드를 실행하면 아래와 같은 결과가 나옵니다.
각속도
각속도는 물체의 회전을 담당합니다.
this.rigidBody.angularVelocity = 150;
angularVelocity 는 각속도 값을 설정합니다. 초당 회전하는 각도 값입니다.
this.rigidBody.angularDamping = 0.5;
angularDamping 은 각속도의 댐핑을 설정합니다. 시간에 따라 회전률이 감소합니다. 0이상의 값을 넣어야 하며 소수점 단위 입니다.
값을 설정하고 코드를 실행하면 아래와 같은 결과가 나옵니다.
충돌 리스너 설정
enabledContactListener 는 충돌했을 때 콜백을 전송할지에 대한 유무를 설정합니다. false 일 때는 충돌했을 때 콜백이 일어나지 않습니다.
타입
rigidBody는 크게 4개의 타입을 가지고 있습니다.
예로들어 벽같은 물체는 Static으로 하면 충돌해도 날아가지 않는 단단한 물체를 만들 수 있습니다.
절대좌표
getWorldPosition 는 현재 물체의 절대 좌표를 가져옵니다.
'프로그래밍 > COCOS Creator' 카테고리의 다른 글
[Cocos Creator] Enabled 에 관한 고찰 (1) | 2018.07.31 |
---|---|
[Cocos Creator] Physics Manager 정복하기(4) - Collider (0) | 2018.07.26 |
[Cocos Creator] Physics Manager 정복하기(2) - 메서드 (0) | 2018.07.26 |
[Cocos Creator] Physics Manager 정복하기(1) - 물리공간 생성 및 설정 (0) | 2018.07.26 |
[Cocos Creator] 캡쳐 (0) | 2018.03.25 |