本文整理汇总了C++中CMover::GetRadiusXZ方法的典型用法代码示例。如果您正苦于以下问题:C++ CMover::GetRadiusXZ方法的具体用法?C++ CMover::GetRadiusXZ怎么用?C++ CMover::GetRadiusXZ使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMover
的用法示例。
在下文中一共展示了CMover::GetRadiusXZ方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetMover
void CAIMonster2::InitAI()
{
CMover* pMover = GetMover();
MoverProp* pProperty = pMover->GetProp();
ASSERT( pProperty );
if( pProperty->dwAI >= AII_VER2_TYPE0 )
m_dwFsmType = pProperty->dwAI - AII_VER2_TYPE0;
m_vPosBegin = pMover->GetPos();
m_fAttackRange = pMover->GetRadiusXZ();
}
示例2: if
// 공격 대상을 찾아서 m_idTarget에 세팅한다.
BOOL CAIMonster2::Search()
{
CMover *pMover = GetMover();
CWorld *pWorld = GetWorld();
CModelObject *pModel = (CModelObject *)pMover->GetModel();
FLOAT fRadius = pMover->GetRadiusXZ(); // this의 반지름
FLOAT fRadiusSq = fRadius * fRadius; // 반지름Sq버전.
if( m_idTarget == NULL_ID && // 공격대상이 정해지지 않았고
(m_vTarget.x == 0 && m_vTarget.y == 0 && m_vTarget.z == 0) ) // 공격위치도 정해지지 않았다.
{
// 어떤 쉐리를 공격할까....? 를 선정함.
if( SelectTarget() == FALSE )
return FALSE;
}
D3DXVECTOR3 vTarget;
FLOAT fDistSq = 0; // 공격지점과 this의 거리.
CMover *pTarget = NULL;
if( m_idTarget != NULL_ID ) // 타겟오브젝이 있을때
{
pTarget = prj.GetMover( m_idTarget );
if( IsValidObj(pTarget) )
vTarget = pTarget->GetPos(); // 공격좌표는 타겟무버의 좌표
else
{
m_idTarget = NULL_ID;
return FALSE; // 타겟이 거시기 하면 걍리턴.
}
}
else if( m_vTarget.x && m_vTarget.y && m_vTarget.z ) // 공격 좌표로 설정되어 있을때.
{
vTarget = m_vTarget;
}
else
{
return FALSE; // 타겟이 거시기 하면 걍리턴.
}
D3DXVECTOR3 vDist = vTarget - pMover->GetPos();
fDistSq = D3DXVec3LengthSq( &vDist ); // 목표지점까지는 거리.
m_fAttackRange = fRadius; // 얼마나 근접해야하는가? 디폴트로 반지름 길이.
if( fDistSq < fRadiusSq * 4.0f ) // 근거리면.
{
DWORD dwNum = xRandom( 100 ); // 0 ~ 99까지으 난수.
if( dwNum < 85 )
{
if( xRandom( 2 ) )
m_nAttackType = CAT_NORMAL; // 앞발로 밟기.
else
m_nAttackType = CAT_NORMAL2;
m_fAttackRange = 5.0f; // 딱붙어서 밟아야 한다. ??
}
else
{
m_nAttackType = CAT_QUAKEDOUBLE; // 두손으로 내려치기 - 스턴
}
}
else if( fDistSq < fRadiusSq * 6.0f ) // 반지름의 x배 이하는 쏘기.
{
DWORD dwNum = xRandom( 100 ); // 0 ~ 99까지으 난수.
// 반지름 3배거리 이상이면 원거리.
if( dwNum < 60 )
{
m_nAttackType = CAT_QUAKE_ONE; // 하늘에서 돌 떨어뜨리기
m_fAttackRange = 15.0f; // xx미터 까지 접근하자. ??
}
else
{
m_idTarget = NULL_ID;
return FALSE;
}
}
else
{
m_nAttackType = CAT_NORMAL; // 앞발로 밟기.
m_fAttackRange = fRadius; //10.0f;
}
return TRUE;
}