MMORPG¿¡¼´Â ¾ÆÁ÷±îÁö ij¸¯Åͳ¢¸®´Â Ãæµ¹ ¾ÈÇÏ´Â °æ¿ì°¡ ¸¹´Ù. ÇϺ¹¿¡¼ ij¸¯Åͳ¢¸®ÀÇ Ãæµ¹À» ¸·À»·Á¸é hkpGroupFilter¸¦ »ç¿ëÇÑ´Ù.
Ãæµ¹ ·¹À̾ Á¤ÇÏ´Â °ÍÀÌ´Ù. µ¿ÀûÀÎ ¹Ú½º³¢¸® Ãæµ¹ ÇÏÁö ¾Ê±â ¶§¹®¿¡ ¹Ú½ºÀÇ È¸Àü ¹æÇâÀÌ µ¿ÀÏÇÏ´Ù.
< ÇÊ¿äÇÑ Çì´õ ÆÄÀÏ°ú ·¹À̾î >
#include <Physics/Collide/Filter/Group/hkpGroupFilter.h>
enum COLLISION_LAYER
{
LAYER_STATIC_BACKGROUND = 1,
LAYER_ACTOR = 2,
};
|
MakeGround( )½Ã »ý¼ºµÇ´Â Á¤ÀûÀÎ ¹Ú½º¸¦ LAYER_STATIC_BACKGROUND ·¹À̾î·Î ¼ÂÆÃÇÏ°í MakeBox( )·Î »ý¼ºµÈ µ¿ÀûÀÎ ¹Ú½º¸¦ LAYER_ACTOR·Î ¼ÂÆÃÇÑ´Ù.
< ·¹ÀÌ¾î ¼³Á¤ >
bool InitHavok()
{
..............
// Replace filter
hkpGroupFilter* groupFilter = new hkpGroupFilter();
groupFilter->disableCollisionsBetween( LAYER_ACTOR, LAYER_ACTOR );
physicsWorld->setCollisionFilter( groupFilter, true );
groupFilter->removeReference();
return true;
}
|
LAYER_ACTOR·Î ¼³Á¤µÈ Ã浹ü ³¢¸®´Â ¼·Î Ãæµ¹ ÇÏÁö ¾Ê´Â´Ù. m_collisionFilterInfo¿¡ Ãæµ¹ ·¹À̾ ¼ÂÆÃÇÑ´Ù.
bool MakeGround()
{
.........
bodyInfo.m_collisionFilterInfo = LAYER_STATIC_BACKGROUND;
g_groundBody = new hkpRigidBody(bodyInfo);
.........
}
bool MakeBox()
{
.........
bodyInfo.m_collisionFilterInfo = LAYER_ACTOR;
int i = 0;
for( int x = 0; x < g_nx; x++ )
.........
}
|
ÇÁ·ÎÁ§Æ® : havok_groupFilter.zip
|