Пример дождя в 3D
|
|
Филипенко_Андрей |
Дата: Понедельник, 22.10.2012, 12:39 | Сообщение # 1 |
( Идей много игр ноль))) )
Сообщений: [511]
|
Переведен на русский Tusan специально для make-games.ru.
P.S. Все что в коде написано после двух слэшей (//) это комментарий кода, его писать не обязательно. Создаем объект капли дождя, назовем его obj_gota. В создании(create) пишем: Code //Высота дождя при создании z = 1024 В шаге(step) пишем: Code //Скорость падения дождя z-=12
//Если капля ниже земли то удаляем ее if z < -8 then {instance_destroy()} В рисовании(draw): Code draw_set_color(c_blue) // Цвет дождя d3d_primitive_begin(pr_linelist) // Инициация 3D примитива
// Рисуем линию из двух вершин d3d_vertex(x,y,z-8) d3d_vertex(x,y,z+8)
d3d_primitive_end() // Конец примитива
Теперь создаем объект obj_emissor. Он будет создавать капли дождя. В шаге(step) пишем: Code //Создание капель дождя в случайных позициях instance_create(random_range(-256,256),random_range(-256,256),obj_gota)
И создаем еще один объект obj_camera. Это собственно камера. В создании(create) пишем: Code //Инициация 3D d3d_start() d3d_set_culling(false) d3d_set_hidden(false) d3d_set_lighting(false) d3d_set_perspective(true) d3d_set_shading(false) texture_set_interpolation(true)
//Переменные камеры bearing=0 strafe=0 z=32 pitch=0
vector_x=0 vector_y=0 vector_z=0
//Создание obj_emissor который будет создавать капли дождя //чем больше будет образцов этого объекта тем интенсивнее будет дождь instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) instance_create(0,0,obj_emissor) В рисовании(draw): Code //Рисование камеры draw_set_color(c_white) bearing -= (display_mouse_get_x() -display_get_width()/2)/10;
pitch += (display_mouse_get_y() -display_get_height()/2)/10; pitch = max(min(pitch,65),-80);
ss = sin(degtorad(bearing));cc = cos(degtorad(bearing)); vector_x=cc*cos(degtorad(-pitch)); vector_y=ss*-cos(degtorad(-pitch)); vector_z=sin(degtorad(-pitch));
d3d_set_projection(x,y,z,x+vector_x,y+vector_y,z+vector_z,0,0,1)
display_mouse_set(display_get_width()/2,display_get_height()/2)
draw_set_color(c_white)
//Рисование пола d3d_draw_floor(-256,-256,0,256,256,0,background_get_texture(tex_chao),5,5)
Создаем фон(background) tex_chao. Это текстура пола.
Все! Готово! Можете запускать пример
Версия game maker: 8.0 Описание: Хороший пример дождя в трехмерном пространстве. Выглядит неплохо, игру не замедляет. Собственно все. Пример небольшой, но полезный.
Сообщение отредактировал: Tusan - Понедельник, 22.10.2012, 15:08 |
|
| |
Rainbow_Sparkle |
Дата: Понедельник, 22.10.2012, 13:09 | Сообщение # 2 |
Сообщений: [390]
|
Где-то уже видел.
|
|
| |
Филипенко_Андрей |
Дата: Понедельник, 22.10.2012, 13:20 | Сообщение # 3 |
( Идей много игр ноль))) )
Сообщений: [511]
|
|
|
| |
Rainbow_Sparkle |
Дата: Понедельник, 22.10.2012, 13:32 | Сообщение # 4 |
Сообщений: [390]
|
Quote (Tusan) На game-maker.ru Точно. У меня GM не распознаёт русские буквы.
|
|
| | |
Филипенко_Андрей |
Дата: Понедельник, 22.10.2012, 15:09 | Сообщение # 6 |
( Идей много игр ноль))) )
Сообщений: [511]
|
Rooffy, Пожалуйста, готово
|
|
| | | |
|