本文整理汇总了C++中CMover::SetAngle方法的典型用法代码示例。如果您正苦于以下问题:C++ CMover::SetAngle方法的具体用法?C++ CMover::SetAngle怎么用?C++ CMover::SetAngle使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CMover
的用法示例。
在下文中一共展示了CMover::SetAngle方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
//.........这里部分代码省略.........
if( g_WorldMng.Get()->GetFullHeight( pMover->GetPos() ) < pMover->GetPos().y ) {
if( pMover->SendActMsg( OBJMSG_LOOKDOWN ) == 1 ) {
fMoved = true;
}
}
}
else if( bDown ) {
if( pMover->SendActMsg( OBJMSG_LOOKUP ) == 1 ) {
fMoved = true;
}
}
else {
if( pMover->SendActMsg( OBJMSG_STOP_LOOK ) == 1 ) {
fMoved = true;
}
}
if( bLeft ) {
m_fRollAng -= 1.0f;
if( m_fRollAng < -45.0f )
m_fRollAng = -45.0f;
if( pMover->SendActMsg( OBJMSG_LTURN, (int)( fTurnAngle * 100.0f ) ) == 1 ) {
fMoved = true;
}
}
else if( bRight ) {
m_fRollAng += 1.0f;
if( m_fRollAng > 45.0f )
m_fRollAng = 45.0f;
if( pMover->SendActMsg( OBJMSG_RTURN, (int)( fTurnAngle * 100.0f ) ) == 1 ) {
fMoved = true;
}
}
else {
if( m_fRollAng < 0 )
{
m_fRollAng += 2.0f;
if( m_fRollAng > 0 ) m_fRollAng = 0;
} else
if( m_fRollAng > 0 )
{
m_fRollAng -= 2.0f;
if( m_fRollAng < 0 ) m_fRollAng = 0;
}
if( pMover->SendActMsg( OBJMSG_STOP_TURN ) == 1 ) {
fMoved = true;
// fBehavior = true;
}
}
// 오른쪽 버튼 드래그는 빗자루 움직임
if( dwMessage == WM_MOUSEMOVE /*&& m_bRButtonDown*/ )
{
float fAng = pMover->GetAngle();
float fAdd = (point.x - m_ptMouseOld.x) / 2.0f;
fAng -= fAdd;
pMover->SetAngle( fAng );
float fAngX = pMover->GetAngleX();
float fAddX = (point.y - m_ptMouseOld.y) / 4.0f;
fAngX += fAddX;
if( fAddX > 0 && fAngX > 45.0f )
fAngX = 45.0f;
else
if( fAddX < 0 && fAngX < -45.0f )
fAngX = -45.0f;
pMover->SetAngleX( fAngX );
if( fAdd || fAddX )
g_DPlay.PostPlayerAngle( TRUE );
}
BOOL bTempKey;
if( bTempKey = g_bKeyTable[ '8' ] )
{
if( !m_bTemp3ed )
{
pMover->SendActMsg( OBJMSG_TEMP2 );
// __bTestLOD ^= 1;
}
}
m_bTemp3ed = bTempKey;
if( fMoved )
{
g_DPlay.SendPlayerMoved2( nFrame );
}
if( fBehavior )
{
pMover->ClearDest();
g_DPlay.SendPlayerBehavior2();
}
return nMsg;
}
示例2: ProcessFlyTracking
void CActionMover::ProcessFlyTracking()
{
CMover* pMover = m_pMover;
// 자동 추적 모드. g_pPlayer만 실행된다.
if( pMover->IsActiveMover() && (pMover->m_dwFlag & MVRF_TRACKING) )
{
static float s_fTurnAcc = 0, s_fTurnAccH = 0;
{
CMover *pTarget = prj.GetMover( pMover->m_idTracking ); // 추적할 목표.
if( pTarget )
{
D3DXVECTOR3 vDist = pTarget->GetPos() - pMover->GetPos(); // 나를 원점으로 타겟까지의 벡터.
FLOAT fAngXZ, fAngH;
xGetDegree( &fAngXZ, &fAngH, vDist ); // 타겟과의 각도 구함.
// 남쪽이 0도 기준. 시계방향 -180까지 시계반대방향 +180
// 3도 이하는 무시.
FLOAT fMoverAng = pMover->GetAngle();
if( fMoverAng > 180.0f ) // 계산하기 좋게 좌표계를 +,- 로 바꿈.
fMoverAng -= 360.0f;
FLOAT fSubAng = fAngXZ - fMoverAng;
if( fSubAng > 180.0f )
fSubAng -= 360.0f;
else if( fSubAng < -180.0f )
fSubAng += 360.0f;
#ifdef _DEBUG
#ifdef __XUZHU
extern float _g_fReg[];
_g_fReg[1] = fSubAng;
_g_fReg[2] = fAngXZ;
#endif
#endif
if( fSubAng < -3.0f ) // 오른쪽으로 돌아야 한다.
s_fTurnAcc = -2.5f;
else
if( fSubAng > 3.0f ) // 왼쪽으로 돌아야 한다.
s_fTurnAcc = 2.5f;
else
s_fTurnAcc = 0;
FLOAT fMoverAngX = pMover->GetAngleX();
FLOAT fSubAngH = fAngH - fMoverAngX;
if( fSubAngH > 180.0f )
fSubAngH -= 360.0f;
else if( fSubAngH < -180.0f )
fSubAngH += 360.0f;
if( fSubAngH < -3.0f )
s_fTurnAccH = -1.5f;
else
if( fSubAngH > 3.0f )
s_fTurnAccH = 1.5f;
else
s_fTurnAccH = 0;
pMover->SetAngle( pMover->GetAngle() + s_fTurnAcc );
pMover->SetAngleX( pMover->GetAngleX() + s_fTurnAccH );
if( s_fTurnAcc || s_fTurnAccH ) // 값이 달라지면 전송함.
g_DPlay.PostPlayerAngle( TRUE );
}
}
}
}