Понедельник, 22 Июля 2019, 21:50

Приветствую Вас Гость

Меню сайта
Категории каталога
Создание игр [321]
Статьи об общих понятиях связанных с созданием игр.
Программирование [71]
Гайды по программированию на разных ЯП.
Движки и Гейммейкеры [126]
Статьи о программах для создания игр, уроки и описания.
Софт [28]
Различные программы, в том числе в помощь игроделам.
2D-графика [12]
Уроки по рисованию, растр, пиксель-арт, создание спрайтов и пр.
3D-графика [11]
Уроки по моделированию, ландшафт, модели, текстурирование и пр.
Моддинг игр [5]
Модификация компьютерных игр, создание дополнений, перевод, хакинг.
Игры [121]
Статьи об играх, в том числе и сделанных на гейммейкерах.
Разное [81]
Статьи, которые не вошли в определённые разделы.
Наш опрос
В игры каких из этих ретро-платформ вы играли?
Всего ответов: 2374
Главная » Статьи » Создание игр

Создание автомобиля с механической кпп (Game Maker)
Создание автомобиля с механической коробки передач

1)Создаём объект o_car, объект здания (или забор), и объект АЗС. В событии Create записываем следующий код:

Code

     globalvar ntr; //количество закиси азота
     ntr=100;
     globalvar spd; //скорость в км/ч
     globalvar tah; //обороты двигателя
     tah=0;
     globalvar kpp; //номер передачи
     kpp=0;
     globalvar prb; //пробег
     globalvar bnz; //топливо
     bnz=10
     globalvar money; //деньги
     money=1250;
      
     //Скорость
     spm[0]=-12 //максимальная скорость при задней передаче равна -12
     spm[1]=0
     spm[2]=12 //максимальная скорость при первой передаче равна 12
     spm[3]=20
     spm[4]=26
     spm[5]=32
      
     //Ускорение
     acc[0]=-0.2
     acc[1]=0
     acc[2]=0.2
     acc[3]=0.15
     acc[4]=0.13
     acc[5]=0.1
      
     //Коэффициент оборотов
     tahk[0]=-7.08
     tahk[1]=0
     tahk[2]=7.08
     tahk[3]=4.25
     tahk[4]=3.27
     tahk[5]=2.65

Это будет некоторая быза данных.
В событии Step:
Code

     image_angle=direction; //поворот спрайта
     friction=0.05; //трение
     spd=speed*5;
     if !kpp=0 tah=speed*tahk[kpp+1]//обороты двигателя
     if kpp=0 and tah>0 tah-=1;
      
     if speed>0 prb+=speed/20250 else prb-=speed/20250; //высчитываем пробег
     if ntr<100 ntr+=0.05; //восстановление нитро со временем
     if keyboard_check(vk_up) and bnz>0 {
         if speed>0 bnz-=speed/202500 else bnz-=speed/202500; //расход топлива
     }

Далее в событии нажатия клавиш:
<Up>
Code

if bnz>0 /*если есть топливо*/{
     if kpp>0/*если передача больше 0*/{
     if speed<spm[kpp+1] speed+=acc[kpp+1]}//разгоняемся
     if kpp=-1/*если включена задняя передача*/{
     if speed>spm[kpp+1] speed+=acc[kpp+1]}
     instance_create(x,y,o_smoke);//из трубы идёт дым
     if kpp=0 and tah<80 tah+=5//если включена нейтральная передача, то увеличиваются обороты двигателя  
}

<Down>
Code

     if speed>0 speed-=0.5; //тормозим
     if speed<0 speed+=0.5; //тормозим
     if not speed=0 instance_create(x,y,o_sledy) //если автомобиль движется, то оставляем следы

<Left>
Code

if spd>-20 and spd<20 direction+=spd/5 else direction+=4; //поворачиваем влево
speed*=0.9925; //скорость уменьшается
if spd>60 instance_create(x,y,o_sledy); //оставляем следы

<Right>
Code

if spd>-20 and spd<20 direction-=spd/5 else direction-=4; //поворачиваем вправо
speed*=0.9925; //скорость уменьшается
if spd>60 instance_create(x,y,o_sledy); //оставляем следы

<Space>
Code

     if keyboard_check(vk_up) and ntr>0  and kpp>0 /*если нажата клавша  <Up>, есть нитро и передача выше 0*/{
     speed+=0.2;//увеличивается скорость
     ntr-=1; //нитро уменьшается
     instance_create(x,y,o_nitro) //из трубы выходит сине-жёлтый дым
     }

press <Shift>
Code

if kpp<4 kpp+=1; //переключаемся на повышенную передачу

press <Ctrl>
Code

if kpp<4 kpp+=1; //переключаемся на повышенную передачу

В событии столкновения с заправкой:
Code

if speed=0 and bnz<50 and money>0 /*если машина стоит, бак не полный и есть деньги*/
{
     bnz+=0.1
     money-=2.5}; //заправляемся

И в событии столкновения со зданием или другим твёрдым объектом:
Code

//столкновение с твёрдым объектом
x=xprevious
y=yprevious
speed=-(speed/2)

Машина у нас готова =)

2)Создаём объекты o_sledy, o_smoke, o_nitro (следы, дым, дым от нитро)
В o_sledy:
В событии Create:

Code

image_angle=o_car.direction //направление спрайта следов
timer=0

В событии Step:
Code

timer+=1
if timer=100 {instance_destroy()} //время жизни следов

В o_smoke и o_nitro:
В Create:
Code

image_angle=o_car.direction
direction=o_car.direction
speed=spd/5-1; //скорость дыма
tmr=0

В Step
Code

direction=o_car.direction
tmr+=1
if tmr>25 instance_destroy() //время жизни дыма

3)Создаём объекты: o_hud, o_arrows, o_kpp. В событии Draw пишем:
В o_hud:

Code

draw_sprite(s_speedometr,-1,view_xview+800,view_yview+600); //рисуем спидометр
draw_text_color(view_xview+670,view_yview+530,prb,c_white,c_white,c_white,c_white,1); //пробег
draw_text_color(view_xview+10,view_yview+10,money,c_white,c_white,c_white,c_white,1); //деньги
draw_text_color(view_xview+60,view_yview+10,'RUB',c_white,c_white,c_white,c_white,1);    
draw_rectangle_color(view_xview+10,view_yview+590,view_xview+40,view_yview+590-ntr,c_blue,c_aqua,c_blue,c_navy,false); //нитро

В o_arrows:
Code

if spd>0 draw_sprite_ext(s_arrow,-1,view_xview+680,view_yview+560,1,1,13-spd*1.3,c_red,1)
else draw_sprite_ext(s_arrow,-1,view_xview+680,view_yview+560,1,1,13+spd*1.3,c_red,1);//стрелка спидометра
draw_sprite_ext(s_arrow,-1,view_xview+560,view_yview+560,1,1,13-tah*1.3,c_red,1); //тахометра
draw_sprite_ext(s_arrow,-1,view_xview+380,view_yview+584,0.3,1,-bnz*3.6,c_red,1); //и уровня топлива
if bnz<5 draw_sprite(s_lamp,-1,view_xview+408,view_yview+552); //если топлива меньше 5 литров, светится лампочка

В o_kpp:
Code

draw_sprite(s_kpp,kpp+1,view_xview+720,view_yview+550); //рисуем номер передачи

Чтобы это код работал, у вас должен быть спрайт s_kpp:

Вот и всё!

Пример

Категория: Создание игр | Добавил: PahanoK_T (02 Ноября 2010)
Просмотров: 7841 | Рейтинг: 4.3/10 |
Теги: урок, Пример, Коробка передач, создание автомобиля, механическая коробка, авто, КПП, скорость, Программирование, Управление авто
Дополнительные опции:
Также если вы считаете, что данный материал мог быть интересен и полезен кому-то из ваших друзей, то вы бы могли посоветовать его, отправив сообщение на e-mail друга:

Игровые объявления и предложения:
Если вас заинтересовал материал «Создание автомобиля с механической кпп (Game Maker)», и вы бы хотели прочесть что-то на эту же тему, то вы можете воспользоваться списком схожих материалов ниже. Данный список сформирован автоматически по тематическим меткам раздела. Предлагаются такие схожие материалы: Если вы ведёте свой блог, микроблог, либо участвуете в какой-то популярной социальной сети, то вы можете быстро поделиться данной заметкой со своими друзьями и посетителями.

Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Поиск по сайту
10 случ. движков
  • eXgine
  • Chocolate Doom
  • LuxRender
  • ORTS
  • G3D Engine
  • Tululoo HTML5 Game Maker
  • Ninfa3D
  • Q3A
  • Xenko
  • vbGORE
  • Друзья сайта
    Игровой форум GFAQ.ru Перевод консольных игр
    Все права сохранены. GcUp.ru © 2008-2019 Рейтинг