충돌 박스 노드에 임시 생성
충돌정보를 넣어줄 노드는 임시로 NiNodePtr spNiNode; 로 한다~
우선은 바운드 박스로 한다!
NiBoxBV* CollisionBox;
CollisionBox = NiNew NiBoxBV();
CollisionBox->SetCenter(NiPoint3(5.0f,5.0f,5.0f));//바운드박스의 중앙을 잡는다.
바운드 박스의 사이즈 설정
CollisionBox->SetExtent(0, 10.0f);
CollisionBox->SetExtent(1, 10.0f);
CollisionBox->SetExtent(2, 10.0f);
여기까지 바운드박스 설정을 한후 충돌데이터에 링크 시킨다.
NiCollisionData *pCollisionData;
추가 시켜야할 노드의 정보로 충돌 데이터 생성한다.
pCollisionData = NiNew NiCollisionData(spNiNode);
pCollisionData->SetModelSpaceABV(CollisionBox);//위에서 만든 충돌박스 링크!
충돌방식에 대해 세팅한다.
pCollisionData->SetPropagationMode(NiCollisionData::PROPAGATE_NAVER);//콜백을 호출하기 위한 정보 세팅
pCollisionData->SetCollisionMode(NiCollisionData::USE_ABV);//ABV형식의 충돌검사를 한다는거?
이로서 충돌 데이터는 완성이다 이제 링크다
spNiNode->SetCollisionObject(pCollisionData);
이 박스의 와이어 프레임출력하고 싶을 시에는 박스정보를 이용해 색상을 설정하여 노드를 생성한다.
NiNode* CollisionBoundBox = NiDrawableBV::CreateWireframeBV(CollisionBox, NiColor(0.0f,1.0f,0.0f),1);
이걸 노드에 Attach!!!!
spNiNode->AttachChild(CollisionBoundBox);
이제 완성된 노드를 업데이트 시키면 된다아...
spNiNode->Update(0.0f);
spNiNode->UpdateProperties();
spNiNode->UpdateEffects();
이 노드를 CollisionGroup의 Collider이나 Collidee로 추가후
FindCollisions을 호출시 충돌이 일어나면 연결된 함수 포인터로 넘어간다.
...다른 좋은방법 아시는분 설명좀...;
출처 : http://tong.nate.com/ddpstddpst/mymaintong
'Gamebryo > Learn' 카테고리의 다른 글
겜브리오의 텍스처 공유 (0) | 2011.11.11 |
---|---|
DirectX 디바이스 얻어오기 (0) | 2010.11.04 |
여러창 동시 렌더링 (0) | 2010.07.02 |
Gamebryo 템플릿 클래스 (0) | 2010.04.08 |
렌더러를 만들어보자 (0) | 2010.04.08 |