当前位置: 首页>>代码示例>>C++>>正文


C++ Box::Collides方法代码示例

本文整理汇总了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;
}
开发者ID:foxblock,项目名称:Pong,代码行数:66,代码来源:battle.cpp


注:本文中的Box::Collides方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。