블로그 이미지
Every unexpected event is a path to learning for you. blueasa

카테고리

분류 전체보기 (2794)
Unity3D (852)
Programming (478)
Server (33)
Unreal (4)
Gamebryo (56)
Tip & Tech (185)
협업 (11)
3DS Max (3)
Game (12)
Utility (68)
Etc (98)
Link (32)
Portfolio (19)
Subject (90)
iOS,OSX (55)
Android (14)
Linux (5)
잉여 프로젝트 (2)
게임이야기 (3)
Memories (20)
Interest (38)
Thinking (38)
한글 (30)
PaperCraft (5)
Animation (408)
Wallpaper (2)
재테크 (18)
Exercise (3)
나만의 맛집 (3)
냥이 (10)
육아 (16)
Total
Today
Yesterday

충돌정보를 넣어줄 노드는 임시로 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
Posted by blueasa
, |