Переключение передач на машине
|
|
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} } в крит машины Добавлено (06.03.2010, 11:29) --------------------------------------------- ой я просто выставил силу трения больше чем сила разгона Добавлено (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 |
постоянный участник
Сейчас нет на сайте
| а по русски можно, ну и если не сложно кодм хотя бы примерно
>
|
|
| |
WXZRW | Дата: Суббота, 06 Марта 2010, 17:28 | Сообщение # 15 |
Thousand faces conspiration
Сейчас нет на сайте
| Quote (Lgunchik) а по русски можно, ну и если не сложно кодм хотя бы примерно К сожалению, наврят ли. У меня нет простых ответов, только сложные. Тем более я по-русски не все термины знаю, вообще в принципе я затрудняюсь правильно обьяснить весь процесс и в моем понимании это было бы разработка от подвески до двигателя, что заняло бы время (довольно много) и фактически тут можно было бы написать страниц на 100 как минимум данных и т.д. То есть самое простое обьяснение я уже привел выше, как еще упростить я даже и не знаю. Либо делай как тебе предложили другие, аркадно то есть.
|
|
| |
Lgunchik | Дата: Воскресенье, 07 Марта 2010, 08:12 | Сообщение # 16 |
постоянный участник
Сейчас нет на сайте
| вот неудача, а я так хотел сделать симулятор, ну хотя бы часть его эх...ладно буду искать инфо по этому поводу
>
|
|
| |
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 |
|
| |