本文整理汇总了C++中Box::Collides方法的典型用法代码示例。如果您正苦于以下问题:C++ Box::Collides方法的具体用法?C++ Box::Collides怎么用?C++ Box::Collides使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Box
的用法示例。
在下文中一共展示了Box::Collides方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessProjectileCollisions
void BattleStage::ProcessProjectileCollisions( Projectile* Source, Vector2* TargetPosition, bool* Continue )
{
Vector2* angV = Source->Direction->ToVector();
bool collisionFound = false;
if( TargetPosition->X - MAIN_POS_X < Source->Radius )
{
TargetPosition->X = Maths::Abs(TargetPosition->X - MAIN_POS_X - Source->Radius) + Source->Radius + MAIN_POS_X;
angV->X *= -1;
collisionFound = true;
Source->OnCollisionPlayersWall( LeftPlayer );
}
if( TargetPosition->X > MAIN_POS_X + MAIN_WIDTH - Source->Radius )
{
TargetPosition->X = (MAIN_POS_X + MAIN_WIDTH - Source->Radius) - (TargetPosition->X - (MAIN_POS_X + MAIN_WIDTH - Source->Radius));
angV->X *= -1;
collisionFound = true;
Source->OnCollisionPlayersWall( RightPlayer );
}
if( TargetPosition->Y - MAIN_POS_Y < Source->Radius )
{
TargetPosition->Y = Maths::Abs(TargetPosition->Y - MAIN_POS_Y - Source->Radius) + Source->Radius + MAIN_POS_Y;
angV->Y *= -1;
collisionFound = true;
}
if( TargetPosition->Y > MAIN_POS_Y + MAIN_HEIGHT - Source->Radius )
{
TargetPosition->Y = (MAIN_POS_Y + MAIN_HEIGHT - Source->Radius) - (TargetPosition->Y - (MAIN_POS_Y + MAIN_HEIGHT - Source->Radius));
angV->Y *= -1;
collisionFound = true;
}
Box* ballBounds = new Box( TargetPosition->X - Source->Radius, TargetPosition->Y - Source->Radius, Source->Radius * 2, Source->Radius * 2 );
if( angV->X < 0 )
{
Box* leftPlyBounds = new Box( LeftPlayer->Position->X - (LeftPlayer->Width / 2), LeftPlayer->Position->Y - (LeftPlayer->Size / 2), LeftPlayer->Width, LeftPlayer->Size );
if( leftPlyBounds->Collides( ballBounds ) )
{
angV->X *= -1;
collisionFound = true;
Source->OnCollision( LeftPlayer );
}
delete leftPlyBounds;
}
if( angV->X > 0 )
{
Box* rightPlyBounds = new Box( RightPlayer->Position->X - (RightPlayer->Width / 2), RightPlayer->Position->Y - (RightPlayer->Size / 2), RightPlayer->Width, RightPlayer->Size );
if( rightPlyBounds->Collides( ballBounds ) )
{
angV->X *= -1;
collisionFound = true;
Source->OnCollision( RightPlayer );
}
delete rightPlyBounds;
}
delete ballBounds;
if( collisionFound )
{
delete Source->Direction;
Source->Direction = angV->ToAngle();
}
delete angV;
}