Создание 3D игр на Game Maker - Game Maker - Конструкторы игр, системы разработки игр
Навигация по сайту
Сайт:

Дополнительно:

Файловый архив:

Каталог статей:

Форум:


Категории раздела
Game Maker [27]
Flash [3]
FPS Creator X9, X10 [1]
Scirra Construct [14]
Multimedia Fusion [0]
001 Game Maker, Map 001 [0]
3D RAD [16]
3D Game Studio [1]
Silent Walk FPS Creator [0]
Blender (Блендер) [1]
Game Editor [0]
Остальное [1]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Какие языки программирования вы знаете?
Всего ответов: 773

Партнеры сайта
....

Создание 3D игр на Game Maker

20:16
Глава I. Включение 3D режима
Итак, прежде чем начать расставлять объекты и подгружать в них 3D модели, необходимо включить режим 3D. Ведь вы не прочтете текст, написанный на скомканом листке бумаги, не выровняв его. Представим, что 3D режим - это тот самый скомканый листок, на котором написаны все 3D объекты, 3D модели и прочее, что нужно рисовать в 3D. Для того, чтобы разровнять наш листок, то есть включить 3D режим, создадим объект objCamera. В событии Create (создание) запишем код:
Quote

global.camsin = sin(direction*pi/180); //Эту строку можно просто запомнить.
global.camcos = cos(direction*pi/180); //И эту тоже biggrin

d3d_start() //Включаем сам 3D режим.
d3d_set_perspective(true) //Включаем перспективу
d3d_set_lighting(false) //Выключаем свет.
d3d_set_culling(false) //Выключаем НЕотрисовку сторон объектов, которые мы не видим (сложно объяснить, поэтому чтобы понять лучше поэкспериментируйте)

texture_set_interpolation(false) //Выключаем сглаженность текстур (можете включить, просто я предпочитаю выключать сглаженность)
z = 16 //Создаем новую координату Z (для простых игр без прыжков, поднятий по лестницам и тому подобным это можно не делать :D)

3D режим мы включили, теперь нам необходимо сделать прорисовку 3D объектов (чтение, уже выровненного листка).
Для этого, в событие Draw (рисование) напишем код:
Quote

d3d_set_projection(x, y, z, x+global.camcos, y-global.camsin, z, 0, 0, 1) //Эту строку можно также, просто запомнить. Ее изменение вам понадобится ОЧЕНЬ редко, если вообще понадобится

draw_set_color(c_white)

d3d_draw_floor(0, 0, 0, room_width, room_height, 0, background_get_texture(texture1), 16, 16) //Создаем плоскость. Синтаксис: d3d_draw_floor(x1, y1, z1, x2, y2, z2, текстура, hrepeat, vrepeat)

Вот и все. smile
Теперь осталось только создать фон, с названием texture1, загрузить в него любую текстуру и можете смело запускать ваше творение. smile
Позже выложу исходник к этой главе. smile

Глава 2 - Ходим smile
В этом уроке, я расскажу о том, как можно «заставить» камеру передвигаться по нашему миру. Вернее, как заставить мир передвигаться вокруг нашей камеры, ведь в 3D это так и происходит. Работать мы будем с тем исходником, с которым работали в предыдущем уроке. Откроем его.
Откроем наш объект objCamera и добавим в него событие Step (шаг). Введем следующий код:
Quote

if(keyboard_check(ord("W"))) //Если нажата клавиша W
{
      speed = 3 //Идем вперед
}
if(keyboard_check(ord("S"))) //Если нажата клавиша S
{
      speed = -3 //Идем назад
}

//Далее начется "самый пугающий код", его можно просто запомнить
if(keyboard_check(ord("A"))) //Если нажали A
{
      var xn,yn; ///Инициализируем новые переменные, действующие только в этом скрипте.
      xn = x - sin(direction*pi/180); //Вычисляем где у нас лево
      yn = y - cos(direction*pi/180); //Вычисляем где у нас лево
      if not place_meeting(xn,yn,sblock) //Если ничего не мешает идти (sblock заменить на название родительского объекта всех ваших твердых объектов)
          { x = xn; y = yn; } //Идем влево
}
if(keyboard_check(ord("D"))) //Если нажали D
{
var xn,yn; //Инициализируем новые переменные, действующие только в этом скрипте.
      xn = x + sin(direction*pi/180); //Вычисляем где у нас право
      yn = y + cos(direction*pi/180); //Вычисляем где у нас право biggrin
      if not place_meeting(xn,yn,sblock) //Если ничего не мешает идти (sblock заменить на название родительского объекта всех ваших твердых объектов)
          { x = xn; y = yn; } //Идем вправо
}
//Конец пугающего кода biggrin
if(keyboard_check(vk_nokey)) //Если ниче не нажимали
{
      speed = 0 //Не двигаемся
}
global.camsin = sin(direction*pi/180); //Обновляем значение для global.camsin (ОБЯЗАТЕЛЬНО!!!)
global.camcos = cos(direction*pi/180); //Обновляем значение для global.camcos (ОБЯЗАТЕЛЬНО!!!)
   

Теперь, добавим событие End Step и запишем в него следующее:
Quote

//Данный код можно не запоминать а просто копировать biggrin
//Он нужен для создания свободного обзора мышкой .
xx = (display_mouse_get_x()-(display_get_width()/2))/16  //16 – скорость поворота по X, можно экспериментировать biggrin
yy = (display_mouse_get_y()-(display_get_height()/2))/16 //16 – скорость поворота по Y, тоже можно экспериментировать

objCamera.direction -= xx
objCamera.zdir -= yy/32 //С числом 32 можно экспериментировать biggrin

display_mouse_set(display_get_width()/2,display_get_height()/2)

Теперь, заходим в событие создания и добавляем туда одну строчку:
Quote

zdir = 0; //инициализируем переменную zdir.

После того, как добавите эту строку, зайдите в событие Draw и замените строку:
Quote

d3d_set_projection(x, y, z, x+global.camcos, y-global.camsin, z, 0, 0, 1)

На
Quote

d3d_set_projection(x, y, z, x+global.camcos, y-global.camsin, z+zdir, 0, 0, 1)

Вот и все, можете смело запускать и бегать. smile
Если у вас выскочила та или иная ошибка, или же, вы просто чего-то не поняли – обращаться ко мне smile

Категория: Game Maker | Просмотров: 2661 | Добавил: DraggonFantasy (15.10.2012) | Рейтинг: 5.0/2
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Создание текстовой игры (0)
Создаем анимацию игрока (0)
24 совета по программированию в Delphi (Дельфи) часть 2 (0)
3D Rad - небольшая статья. (2)
Исключения в C++ (0)
Создание рикошета пуль от стены (4)
Создание арканойда шаг за шагом в XNA Game Studio (0)
Моя первая страница на PHP (0)
С чего начать создание игры для начинающих? (13)
Задротство - основа MMO игр (7)
Многопоточность (0)
Золотые Правила Игродела (0)
Создаем 2-х битный теннис на двоих без программирования (0)
Создание базового движка для игры. Часть 2. Анимация, Столкновения и воспроизведения музыки (0)
Создание RTS игры (2)
Всего комментариев: 3
2 Dr@gN(ScorpyZ)   (08.01.2013 15:17)
Ultimate 3D намного легче

3 ZiP   (09.01.2013 21:56)
Она качественнее, но не легче. smile
Там просто уже готовые классы и методы, а здесь надо всё самому прописывать. И то в ультиме для создания качественного уровня уходит больше времени, так как там не возможно использовать редактор комнат как здесь. smile

1 Rainbow_Sparkle   (21.10.2012 12:28)
Персонаж проходит сквозь стены. Пытался исправить с помощью скриптов - не вышло. Что мне делать?

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Мы в социальных сетях

Поиск
Поиск по всему сайту:
Поиск по разделу:

Панель пользователя
Здравствуйте, Гость


Ник:
Пароль:
Запомнить :

Ваш IP: 54.161.157.73

Случайные конструкторы

Случайные движки

Случайные статьи

Статистика
Онлайн всего: 2
Гостей: 2
Пользователей: 0

На сайте были:
Конструктор , Filinshein , FireOfSteel , devbond007 , proto1ype , frere , CyberHawk , vicin

При полном или частичном копировании материалов сайта ссылка на Make-Games.ru обязательна. Make-Games.ru © 2008 - 2016 Хостинг от uWeb
Топ Разработка игр Рейтинг@Mail.ru