Предыдущая Следующая
Единственное, о чем еще следует сказать, - это то, что элементы Min и Max структуры BoundingBox задаются трехмерным вектором, состоящим из трех координат осей X, Y и Z.
Vector3(10, 20, 0);
В двухмерном пространстве ось Z присутствует, но она работает несколько иначе, чем в трехмерных играх. Поэтому для простых двухмерных спрайтов третий параметр вектора ставится всегда в ноль и не используется. В трехмерных играх ось Z используется, а в векторе обязательно задается значение по оси Z. Тогда мы получим уже не ограничивающий прямоугольник, а ограничивающий куб (все модели объемные), но об этом вы узнаете в свое время и в своей главе.
10.2. Проект Collision
Итак, приступим к работе над проектом Collision, в котором мы добавляем обработку столкновений между платформой и падающими с неба объектами. В листинге 10.1 представлен полный программный код класса Game1. Сначала давайте посмотрим на весь исходный код этого класса, а затем перейдем к его подробному анализу. Остальные классы проекта Collision остаются неизменными, как и в предыдущих проектах игры.
//=========================================================================
/// <summary>
/// Листинг 10.1
/// Исходный код к книге:
/// "Программирование компьютерных игр под Windows в XNA Game Studio Express" /// Автор книги: Горнаков С. Г.
/// Глава 10
/// Проект: Collision /// Класс: 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 Collision
і
public class Gamel : Microsoft.Xna.Framework.Game
і
GraphicsDeviceManager graphics; ContentManager content; KeyboardState keyboardState; SpriteBatch spriteBatch; Sprite[] sprite = new Sprite[5]; private Texture2D backgroundl; private Texture2D background2; Random rand = new Random();
int j = 0;
Sprite platform;
private bool paused = false;
private bool pauseKeyDown = false;
public BoundingBox bbplatform;
public BoundingBox[] bb = new BoundingBox[5];
/// <summary> /// Конструктор /// <summary> public Gamel()
і
graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); graphics.PreferredBackBufferWidth = 1024; graphics.PreferredBackBufferHeight = 7 68; graphics.PreferMultiSampling = false; graphics.IsFullScreen = true; for (int i = 0; sprite.Length > i; Предыдущая Следующая
|