Создание 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]
Все остальное, что не попадает ни под одну категорию.

Мини-Опрос
Чему вы отдаете большее предпочтение?
Всего ответов: 433

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

Создание 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 | Просмотров: 3243 | Добавил: DraggonFantasy (15.10.2012) | Рейтинг: 5.0/2
HTML ссылка на материал:
BB ссылка на материал:
Похожие материалы :
Возможно вам будет интересно:
Пингуем (Ping) под Delphi (1)
Создаем анимацию игрока (0)
Borland Assembler (BASM) уроки для начинающих (урок 5) (0)
Физика (Blitz 3D) (0)
Создание Платформенной Игры Copyright 2001 by Mark Overmars (0)
Создаем танчики (0)
Несколько советов (ГМ) (0)
Создание 2D платформера а-ля Ghost Quest (1)
Создаем вертолет (2)
Создание РПГ (0)
Урок для начинающих по Game Maker v8 (платформенная игра) (1)
Урок по PaintNET (1)
Что такое ПХП и как он работает? (0)
PHP и MySQL – Теоретический курс. Введение. (2)
Создание многопользовательской(online) игры на Game Maker. (часть 4) (0)
Всего комментариев: 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.162.218.214

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

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

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

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

На сайте были:
ZiP , KoSYaK

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