Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

cursor.spritePosition.Y = screenHight - cursor.spriteTexture.Hight;

// Задаем сферу для мячей

for (int i = 0; bb.Length > i;

{

bb[i].Center = ball[i].position; bb[i].Radius = ball[i].radius;

}

322 Стреляем по целям

if (currentState.Triggers.Right > 0.5f) {

Ray pickRay = GetPickRay();

Nullable<float> resultO = pickRay.Intersects(bb[0]); if (resultO.HasValue == true)

{

ball[0].position.X = rand.Next(-(rand.Next(0, 60)), rand.Next(0, 60)); ball[0].position.Y = rand.Next(50, 80); ball[0].position.Z = -(rand.Next(20, 100)); }

Nullable<float> resultl = pickRay.Intersects(bb[1]); if (resultl.HasValue == true)

{

ball[1].position.X = rand.Next(-(rand.Next(0, 60)), rand.Next(0, 60)); ball[1].position.Y = rand.Next(50, 80); ball[1].position.Z = -(rand.Next(20, 100));

}

Nullable<float> result2 = pickRay.Intersects(bb[2]); if (result2.HasValue == true)

{

ball[2].position.X = rand.Next(-(rand.Next(0, 60)), rand.Next(0, 60)); ball[2].position.Y = rand.Next(50, 80); ball[2].position.Z = -(rand.Next(20, 100));

} }

// Поставим мячи на новые позиции // Этот блок кода мы в дальнейшем удалим if (currentState.Triggers.Left > 0.5f)

{

for (int i = 0; ball.Length > i;

{

ball[i].position.X = rand.Next(-(rand.Next(0, 60)), rand.Next(0, 60)); ball[i].position.Y = rand.Next(50, 80); ball[i].position.Z = -(rand.Next(20, 100));

}

} }

/// <summary>

/// Преобразовываем координаты /// <summary> Ray GetPickRay()

{

float cursorX = cursor.spritePosition.X + cursor.spriteTexture.Width/2; float cursorY = cursor.spritePosition.Y + cursor.spriteTexture.Height/2;

Vector3 nearsource = new Vector3(cursorX, cursorY, 0f); Vector3 farsource = new Vector3(cursorX, cursorY, 1f);

Целимся и стреляем 323

world = Matrix.CreateTranslationfO, 0, 0);

view = Matrix.CreateLookAt(camera, Vector3.Zero, Vector3.Up); proj=Matrix.CreatePerspectiveFieldOfView(FOV,aspectRatio,nearClip,farClip);

Vector3 nearPoint = graphics.GraphicsDevice.Viewport.Unproject(nearsource, proj, view, world);

Vector3 farPoint = graphics.GraphicsDevice.Viewport.Unproject(farsource, proj, view, world);

Vector3 direction = farPoint - nearPoint; direction.Normalize();

Ray pickRay = new Ray(nearPoint, direction); return pickRay;

}

} }

Глава 20

Формируем _трехмерную сцену

Способов создания полноценных трехмерных сцен очень много. Выбор того или иного способа целиком зависит от игровых задач. В игре «Футбольный стрелок» наша камера статична и находится в одном положении, поэтому для организации сцены был выбран механизм загрузки в игру модели стадиона. Суть этого способа заключается в том, чтобы загрузить в игру модель стадиона и установить камеру под определенным углом, а затем на фоне стадиона развернуть все игровые действия.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz