Пятница, 29 Ноября 2024, 06:01

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Переключение передач на машине
LgunchikДата: Пятница, 05 Марта 2010, 15:19 | Сообщение # 1
постоянный участник
Сейчас нет на сайте
я делаю игру жанра драг-реисинг и там обязательно должны быть передачи у машин. На 1 разгоняется 1-10 км\ч и потом уже туго идёт или вовсе не идёт разгон, переключаешься на 2 передачу 10-20 км\ч
но так чтобы если сразу врубить допустим 3 передачу (20-40км\ч), то разгон будет медленый (по наростанию) пока не разгонится до 20.
Вопрос как это реализовать в гм


>
SharomДата: Пятница, 05 Марта 2010, 15:40 | Сообщение # 2
участник
Сейчас нет на сайте
Зная GML это легко реализовать. Это можно сделать используя несколько cаse
ScorpioДата: Пятница, 05 Марта 2010, 15:41 | Сообщение # 3
Любитель геймдева
Сейчас нет на сайте
Ну... например, так
в Create
maxspeed=10
razgon=0.1

в событии кнопки перекл. передачи

if speed<maxspeed {speed+=razgon}

Передача 1 (допустим, кнопка 1)
razgon=0.6
maxspeed=10

Передача 2 (допустим, кнопка 2)
razgon=0.3
maxspeed=20

Передача 3 (допустим, кнопка 3)
razgon=0.1
maxspeed=40

Сообщение отредактировал Scorpio - Пятница, 05 Марта 2010, 15:41
LgunchikДата: Пятница, 05 Марта 2010, 15:56 | Сообщение # 4
постоянный участник
Сейчас нет на сайте
не вы меня не поняли надо сделать что бы допустим при нажатии 1 вкл. первая передача , машина разгоняется до 10 км\ч и далее скорость колеблется от 10 до 12км\ч(примерно) , переключая на следующую передачу машина продолжала разгонятся, ну , а если с 0км\ч вкл. сразу 3 передачу , то машина будет сначала плестись, а потом постепенно разгонялась, как собственно и устроены машины в реале. А как мне написал Scorpio, так у мну давным давно было сделано))

>
ScorpioДата: Пятница, 05 Марта 2010, 16:10 | Сообщение # 5
Любитель геймдева
Сейчас нет на сайте
Тогда при переключении передач добавь в конце кода
last=номер_передачи (1, 2 или 3)
в событии Create так
last=0
а в начале кода третьей так:
maxspeed=40
if last=1
{razgon=сколько_надо}
if last=2
{razgon=уже_больше}
SharomДата: Пятница, 05 Марта 2010, 16:13 | Сообщение # 6
участник
Сейчас нет на сайте
Переделав код Scorpio, получаем

Code
if speed<maxspeed {speed+=razgon}  

Передача 1 (допустим, кнопка 1)  
razgon=0.6  
maxspeed=12
   if (speed==10) {razgon=0.1}

Передача 2 (допустим, кнопка 2)  
razgon=0.3  
maxspeed=25  
   if (speed==20) {razgon=0.1}

Передача 3 (допустим, кнопка 3)  
razgon=0.1  
maxspeed=45
   if (speed==40) {razgon=0.1}

Примерно так

ScorpioДата: Пятница, 05 Марта 2010, 16:18 | Сообщение # 7
Любитель геймдева
Сейчас нет на сайте
Можно и так.

Сообщение отредактировал Scorpio - Пятница, 05 Марта 2010, 16:19
LgunchikДата: Суббота, 06 Марта 2010, 11:36 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
хмм...почемуто не работает, машина просто не едет
в стэп машины
Code
if speed<maxspeed  
{
     speed+=razgon
}   

if keyboard_check(ord('1'))
{
     razgon=0.6   
     maxspeed=12

    if (speed==10) {razgon=0.1}  
}
if keyboard_check(ord('2'))  
{  
     razgon=0.3   
     maxspeed=25
   
    if (speed==20) {razgon=0.1}  
}
if keyboard_check(ord('3'))   
{
     razgon=0.1
     maxspeed=50

     if (speed==45) {razgon=0.1}  
}

в крит машины

Code
razgon=0
maxspeed=0

Добавлено (06.03.2010, 11:29)
---------------------------------------------
ой я просто выставил силу трения больше чем сила разгона biggrin

Добавлено (06.03.2010, 11:36)
---------------------------------------------
что обозначает строчка:

Code
if (speed==21) {razgon=0.1}

?


>
DarkShadeДата: Суббота, 06 Марта 2010, 11:40 | Сообщение # 9
Повелитель стихий
Сейчас нет на сайте
Если скорость == 21 то начало блока разгон =0.1 конец блока

Мой блог
LgunchikДата: Суббота, 06 Марта 2010, 12:06 | Сообщение # 10
постоянный участник
Сейчас нет на сайте
опять не то что надо(((

>
SharomДата: Суббота, 06 Марта 2010, 12:35 | Сообщение # 11
участник
Сейчас нет на сайте
Это значит, что если скорость равна 21 тогда разгон становится 0.1

Lgunchik, тебе код не подходит?
Поясни что тебе нужно, тогда смогу написать код

Сообщение отредактировал Sharom - Суббота, 06 Марта 2010, 12:36
LgunchikДата: Суббота, 06 Марта 2010, 12:54 | Сообщение # 12
постоянный участник
Сейчас нет на сайте
если вы играли в NFS Prostreet и видели гонки типа дрэг , то наверняка нернячили из-за того что не удаётся переключить скорость вовремя, или случаяно переключили на 2 скорости вперед,то машина едет туго но когда она разгоняется до той скорости каторая оптимальна для этой передачи(скорость и разгон должны быть взаимо связаны допустим на третьей передачи которая требует начальной точки 40 км\ч, а её включить на 10 км\ч то машина явно будет ехать медлено но скорость набирать должна а чем больше скорость тем больше разгон), то разгон становится гораздо больше. но при достигании точки требуемой для передачи разгон выравнивается и не поднимается больше. ПОВТОРЯЮ ВСПОНИТЕ НАСТОЯЩУЮ МАШИНУ И КАК ОНА УСТРОЕНА!!!

>
WXZRWДата: Суббота, 06 Марта 2010, 13:29 | Сообщение # 13
Thousand faces conspiration
Сейчас нет на сайте
Quote (Lgunchik)
ПОВТОРЯЮ ВСПОНИТЕ НАСТОЯЩУЮ МАШИНУ И КАК ОНА УСТРОЕНА!!!

Для таких целей требуется симулировать двигатель машины, также как и коробку передач. То есть, тяга на ведущих колесах авто это результат тяги на двигателе после подключения к двигателю коробки передач. То есть тяга на колесе зависит от передаточного числа той передачи КПП, которая включена в данный момент.

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

Двигатель может симулироваться по кривым графиков (lookup table), для КПП достаточно использовать передаточные числа. То есть в целом нужно получить тягу на двигателе и преобразовать эту величину в тягу на ведущих колесах, учитывая также агрегаты авто.

LgunchikДата: Суббота, 06 Марта 2010, 16:31 | Сообщение # 14
постоянный участник
Сейчас нет на сайте
а по русски можно, ну и если не сложно кодм хотя бы примерно happy

>
WXZRWДата: Суббота, 06 Марта 2010, 17:28 | Сообщение # 15
Thousand faces conspiration
Сейчас нет на сайте
Quote (Lgunchik)
а по русски можно, ну и если не сложно кодм хотя бы примерно

К сожалению, наврят ли. У меня нет простых ответов, только сложные. Тем более я по-русски не все термины знаю, вообще в принципе я затрудняюсь правильно обьяснить весь процесс и в моем понимании это было бы разработка от подвески до двигателя, что заняло бы время (довольно много) и фактически тут можно было бы написать страниц на 100 как минимум данных и т.д.

То есть самое простое обьяснение я уже привел выше, как еще упростить я даже и не знаю.

Либо делай как тебе предложили другие, аркадно то есть.

LgunchikДата: Воскресенье, 07 Марта 2010, 08:12 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
вот неудача, а я так хотел сделать симулятор, ну хотя бы часть его sad эх...ладно буду искать инфо по этому поводу

>
WXZRWДата: Воскресенье, 07 Марта 2010, 13:50 | Сообщение # 17
Thousand faces conspiration
Сейчас нет на сайте
Здесь есть статья, правда она не покрывает многие вещи и решения там довольно таки тривиальные и упрощенные - http://www.gamedev.ru/code/articles/?id=4233, но я думаю что можно начать и с этого. Вообще то там нет данных о подвеске и не учитывается физика твердого тела, и много чего еще, хотя там есть двигатель и КПП. Но во всяком случае я думаю что правильно перевели все термины и т.д.

Я вообще не очень уверен что гамак подходит для этих целей, возможно стоило бы посмотреть на Racer, есть на нашем сайте : http://gcup.ru/news/racer_version_086/2009-11-13-961, также http://gcup.ru/load/racer/2-1-0-92.

Статья по ссылке выше, насколько я помню, была от одного из разрабов Racer'a.

В принципе ты можешь начать с этого, потом усложнишь и переделаешь, либо сделаешь свое изначально.

LgunchikДата: Понедельник, 08 Марта 2010, 17:28 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
не 3д мне пока рановато, а вот 2д в самый раз. У меня уже двиг одной игры есть там тол уровни надо добавить, оружие и соперников...вот ток желания нету

Добавлено (08.03.2010, 17:28)
---------------------------------------------
мне всё же подсказали и я сделал это , может пока это и не полное симулирование механизма машины, но зато нечто похожее(в моём случае так как надо)
в стэп машины

Code
if (keyboard_check(vk_up)) and speed<maxspeed {
      speed += razgon
      oborot-=1
}
if (keyboard_check(vk_down)) {
      speed -= razgon
}

//Скорость 1

      if global.one=1 {
          maxspeed=10
          razgon = 0.6;
      }

//Скорость 2

      if global.dva=1 {
          maxspeed=20
          razgon = 0.6;
      }

        
      if (speed<9) and (global.dva=1)
{
      razgon=0.55
}

//Скорость 3
        
      if global.tri=1 {
          maxspeed=40
          razgon = 0.6;
      }

        
      if (speed<9) and (global.tri=1)
{
      razgon=0.51
}

if (speed<19) and (global.tri=1) and (speed>9)
{
      razgon=0.54
}

в крит все переменные каторые не встроены в гм

ну и сделать так что бы при нажатии 1 использовался код первой передачи ну и т.д.

отригулировав всё под свой вкус и цвет можно добиться хорошего результата


>

Сообщение отредактировал Lgunchik - Понедельник, 08 Марта 2010, 17:30
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг