本文整理汇总了C++中CTFPlayer::GetAbsVelocity方法的典型用法代码示例。如果您正苦于以下问题:C++ CTFPlayer::GetAbsVelocity方法的具体用法?C++ CTFPlayer::GetAbsVelocity怎么用?C++ CTFPlayer::GetAbsVelocity使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTFPlayer
的用法示例。
在下文中一共展示了CTFPlayer::GetAbsVelocity方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: TeleporterTouch
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CObjectTeleporter::TeleporterTouch( CBaseEntity *pOther )
{
if ( IsDisabled() )
{
return;
}
// if it's not a player, ignore
if ( !pOther->IsPlayer() )
return;
CTFPlayer *pPlayer = ToTFPlayer( pOther );
CTFPlayer *pBuilder = GetBuilder();
Assert( pBuilder );
if ( !pBuilder )
{
return;
}
// if its not a teammate of the builder, notify the builder
if ( pBuilder->GetTeamNumber() != pOther->GetTeamNumber() )
{
// Don't teleport enemies
return;
}
// is this an entrance and do we have an exit?
if ( GetType() == OBJ_TELEPORTER_ENTRANCE )
{
if ( ( m_iState == TELEPORTER_STATE_READY ) )
{
// are we able to teleport?
if ( pPlayer->HasTheFlag() )
{
// If they have the flag, print a warning that you can't tele with the flag
CSingleUserRecipientFilter filter( pPlayer );
TFGameRules()->SendHudNotification( filter, HUD_NOTIFY_NO_TELE_WITH_FLAG );
return;
}
// get the velocity of the player touching the teleporter
if ( pPlayer->GetAbsVelocity().Length() < 5.0 )
{
CObjectTeleporter *pDest = GetMatchingTeleporter();
if ( pDest )
{
TeleporterSend( pPlayer );
}
}
}
}
}
示例2: TeleporterTouch
//-----------------------------------------------------------------------------
//
//-----------------------------------------------------------------------------
void CObjectTeleporter::TeleporterTouch( CBaseEntity *pOther )
{
if ( IsDisabled() )
{
return;
}
// if it's not a player, ignore
if ( !pOther->IsPlayer() )
return;
CTFPlayer *pPlayer = ToTFPlayer( pOther );
int bTwoWayTeleporter = 0;
CALL_ATTRIB_HOOK_INT_ON_OTHER( pPlayer, bTwoWayTeleporter, bidirectional_teleport );
// is this an entrance and do we have an exit?
if ( GetObjectMode() == TELEPORTER_TYPE_ENTRANCE || bTwoWayTeleporter > 0 )
{
if ( ( m_iState == TELEPORTER_STATE_READY ) )
{
// are we able to teleport?
if ( !PlayerCanBeTeleported( pPlayer ) )
{
if ( pPlayer->HasTheFlag() )
{
// If they have the flag, print a warning that you can't tele with the flag
CSingleUserRecipientFilter filter( pPlayer );
TFGameRules()->SendHudNotification( filter, HUD_NOTIFY_NO_TELE_WITH_FLAG );
}
return;
}
// get the velocity of the player touching the teleporter
if ( pPlayer->GetAbsVelocity().Length() < 5.0 )
{
CObjectTeleporter *pDest = GetMatchingTeleporter();
if ( pDest )
{
TeleporterSend( pPlayer );
}
}
}
}
}
示例3: PlayerMove
//----------------------------------------------------------------------------------------
// Purpose: moves the player
//----------------------------------------------------------------------------------------
void CTFGameMovement::PlayerMove()
{
// call base class to do movement
BaseClass::PlayerMove();
// handle player's interaction with water
int nNewWaterLevel = m_pTFPlayer->GetWaterLevel();
if ( m_nOldWaterLevel != nNewWaterLevel )
{
if ( WL_NotInWater == m_nOldWaterLevel )
{
// The player has just entered the water. Determine if we should play a splash sound.
bool bPlaySplash = false;
Vector vecVelocity = m_pTFPlayer->GetAbsVelocity();
if ( vecVelocity.z <= -200.0f )
{
// If the player has significant downward velocity, play a splash regardless of water depth. (e.g. Jumping hard into a puddle)
bPlaySplash = true;
}
else
{
// Look at the water depth below the player. If it's significantly deep, play a splash to accompany the sinking that's about to happen.
Vector vecStart = m_pTFPlayer->GetAbsOrigin();
Vector vecEnd = vecStart;
vecEnd.z -= 20; // roughly thigh deep
trace_t tr;
// see if we hit anything solid a little bit below the player
UTIL_TraceLine( vecStart, vecEnd, MASK_SOLID,m_pTFPlayer, COLLISION_GROUP_NONE, &tr );
if ( tr.fraction >= 1.0f )
{
// some amount of water below the player, play a splash
bPlaySplash = true;
}
}
if ( bPlaySplash )
{
m_pTFPlayer->EmitSound( "Physics.WaterSplash" );
}
}
}
}