Предыдущая Следующая
310 Стреляем по целям
Целимся и стреляем 311
Но в дальнейшем мы будем вести подсчет попадания в мячи по каждому отдельному мячу, поэтому нам здесь цикл не подойдет.
В результате два рассмотренных метода представляют отлаженный механизм по переносу координат курсора мыши в трехмерную плоскость и обработке столкновений между спрайтом и моделью. Этот механизм вам может понадобиться в различных играх, например в шутерах от первого или второго лица, где, так же как и нашей игре, присутствуют двухмерный прицел и множество различных трехмерных моделей. В листинге 20.1 вы найдете полный исходный код класса Game1, а сам проект - на компакт-диске в папке Code\Chapter20\CursorBall.
//=========================================================================
/// <summary>
/// Листинг 20.1
/// Исходный код к книге:
/// "Программирование компьютерных игр под Windows в XNA Game Studio Express"
/// Автор книги: Горнаков С. Г.
/// Глава 20
/// Проект: CursorBall
/// Класс: Game1
/// Подбиваем мячики
/// <summary>
//=========================================================================
#region Using Statements using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Storage; #endregion
namespace CursorBall {
public class Game1 : Microsoft.Xna.Framework.Game
{
private enum CurentGameState
{
SplashScreen,
MenuScreen,
AboutScreen,
GameScreen,
GameOverScreen,
VictoryScreen
CurentGameState gameState = CurentGameState.GameScreen;
GraphicsDeviceManager graphics; ContentManager content; KeyboardState keyboardState; int screenWidth, screenHeight;
Matrix view; Matrix proj; Matrix world;
static float aspectRatio;
static float FOV = MathHelper.PiOver4;
static float nearClip = 1.0f;
static float farClip = 1000.0f;
private ModelClass[] ball = new ModelClass[3]; MouseState mouseState; Random rand = new Random();
SpriteBatch spriteBatch; Sprite cursor;
public BoundingSphere[] bb = new BoundingSphere[3];
/// <summary> /// Конструктор /// <summary> public Game1() {
graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); for (int i = 0; ball.Length > i;
{
ball[i] = new ModelClass();
}
cursor = new Sprite();
}
/// <summary> /// Инициализация /// <summary> Предыдущая Следующая
|