예제 #1
0
void GameWorld::checkForCollisions()
{
	Player* player = m_gameObjectManager->getPlayer();

	// check enemies against player shots and against player.
	checkCollisionWithEnemies(player);

	// Player against special objects
	checkCollionPlayerVsSpecialObjects(player);

	// Enemy shots against player			
	checkCollisionVsEnemyShots(player);

	// Check if player collide with the terrain
	checkTerrainCollision(player);

}
예제 #2
0
void Viewer::move(float dx, float dy, float dz){
	glm::vec3 old_position = _position;

	_position.x = _position.x + dz * -sin(_current_angle) + dx * -sin(_current_angle + (PI /2));
	_position.y = _position.y + dy;
	_position.z = _position.z + dz * -cos(_current_angle) + dx * -cos(_current_angle + (PI/2));

	if (checkTerrainCollision()){
		//ROLLBACK
		_position = old_position;
		
		setVelocity(0,0,0);
	} 

	if (checkObjectCollisions()){
		_position.x = _position.x - dz * -sin(_current_angle);
		_position.z = _position.z - dz * -cos(_current_angle);

		setForwardVelocity(0);
	}
}