Управление в GMS
|
|
Just1ucky | Дата: Вторник, 17 Июня 2014, 12:51 | Сообщение # 1 |
частый гость
Сейчас нет на сайте
| Помогите настроить управление, чтобы скорость "влево" было меньше, чем в остальных направлениях. Вот такой код написал: Код var up,down,left,right; //Управление if keyboard_check(ord('W')) || keyboard_check(vk_up) {up = true}else{up = false}; if keyboard_check(ord('S')) || keyboard_check(vk_down) {down = true}else{down = false}; if keyboard_check(ord('A')) || keyboard_check(vk_left) {left = true}else{left = false}; if keyboard_check(ord('D')) || keyboard_check(vk_right) {right = true}else{right = false}; //Движение if speed < 15 { if up {vspeed-=1}; if down {vspeed+=1}; if left {hspeed-=1}; if right {hspeed+=1}; } //Трение if up || down || left || right {friction=0.4}else{friction=1};
|
|
| |
SpeRdKeaR | Дата: Вторник, 17 Июня 2014, 13:22 | Сообщение # 2 |
KillerReborn
Сейчас нет на сайте
| Just1ucky, эм... А сам? Может так? Код var up,down,left,right; //Управление if keyboard_check(ord('W')) || keyboard_check(vk_up) {up = true}else{up = false}; if keyboard_check(ord('S')) || keyboard_check(vk_down) {down = true}else{down = false}; if keyboard_check(ord('A')) || keyboard_check(vk_left) {left = true}else{left = false}; if keyboard_check(ord('D')) || keyboard_check(vk_right) {right = true}else{right = false}; //Движение if speed < 15 { if up {vspeed-=1}; if down {vspeed+=1}; if left {hspeed-=0.5}; if right {hspeed+=1}; } //Трение if up || down || left || right {friction=0.4}else{friction=1}; Сам не студией, а восьмеркой пользуюсь, но по-моему в твоем случае все легко. P.S. Мой тебе совет - если используешь скольжение (да и если не используешь ) пиши не -= (когда хочешь отрицательное значение придать), а =-. Хотя - твои проблемы, но могут быть баги со скоростью. Так как с -= будет просто убавлять у переменной введенное значение, а с =- - придавать отрицательное.
А звезды, будто мириады стрел, Ловя на мушку силуэты снов. Смеется и злорадствует любовь, И мы с тобой попали в их прицел...
Сообщение отредактировал SpeRdKeaR - Вторник, 17 Июня 2014, 13:23 |
|
| |
LunarPixel | Дата: Вторник, 17 Июня 2014, 13:31 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Цитата SpeRdKeaR ( ) Мой тебе совет В данном случае все написано верно, так как тут реализовано постепенное ускорение.
Ну и, по-моему, очевидно, что ТС вообще ничего не использует, ибо просто скопирова данный кусок кода от куда-то.
|
|
| |
OpenGOO | Дата: Вторник, 17 Июня 2014, 13:38 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| LunarPixel, да вот отсюда он взял
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |
Just1ucky | Дата: Вторник, 17 Июня 2014, 14:07 | Сообщение # 5 |
частый гость
Сейчас нет на сайте
| Так пробовал, но не то получается. Добавлено (17.06.2014, 14:07) ---------------------------------------------
Цитата OpenGOO ( ) LunarPixel, да вот отсюда он взял
Да, скопировал от туда. Хотел разобраться с gml, так как раньше работал без кода.
|
|
| |
SpeRdKeaR | Дата: Вторник, 17 Июня 2014, 14:48 | Сообщение # 6 |
KillerReborn
Сейчас нет на сайте
| Цитата Just1ucky ( ) Так пробовал, но не то получается.
А звезды, будто мириады стрел, Ловя на мушку силуэты снов. Смеется и злорадствует любовь, И мы с тобой попали в их прицел...
|
|
| |
XDominator | Дата: Вторник, 17 Июня 2014, 15:16 | Сообщение # 7 |
постоянный участник
Сейчас нет на сайте
| а просто начать с ивентов под каждую кнопку не вариант? Зачем начинать с горожения такого огорода? Сделай ивенты под нужные кнопки, и пиши в них действия кусками кода, а не кнопками. А уже потом усложняй.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
Just1ucky | Дата: Вторник, 17 Июня 2014, 18:08 | Сообщение # 8 |
частый гость
Сейчас нет на сайте
| Цитата XDominator ( ) а просто начать с ивентов под каждую кнопку не вариант? Зачем начинать с горожения такого огорода? Сделай ивенты под нужные кнопки, и пиши в них действия кусками кода, а не кнопками. А уже потом усложняй.
Я знаю как с кнопками. Пишу же, что хотел разобраться с кодом.
|
|
| |
XDominator | Дата: Вторник, 17 Июня 2014, 18:38 | Сообщение # 9 |
постоянный участник
Сейчас нет на сайте
| Ну вот. Замени кнопки в тех же местах на код. А уже потом переходи к слеплению всего этого воедино. В твоем случае непонятно, что значит влево. ты используешь строгие направления в 0/90/180/270 градусов? Или твой объект умеет поворачивать? Ходить стрейфом может быть? В простейшем случае, измененная скорость влево обозначает лишь измененную цифру скорости в ивенте кнопки "A" в wasd раскладке, и ничего большего. Назначение и применение твоей системы управления, лично мне, непонятны. Но однако, легко выделить участок кода, отвечающий за скорость влево: if left {hspeed-=1}; Замени 1 на 0.5. Вообще же, vspeed и hspeed - встроенные параметры для каждого объекта, которые устанавливают вертикальную и горизонтальную проекции скоростей соответственно.
Ghaarp
The soul lighter(Android, logic)
Zzzzombie RAGE!!!(For android)
|
|
| |
Just1ucky | Дата: Вторник, 17 Июня 2014, 18:43 | Сообщение # 10 |
частый гость
Сейчас нет на сайте
| Цитата XDominator ( ) Ну вот. Замени кнопки в тех же местах на код. А уже потом переходи к слеплению всего этого воедино. В твоем случае непонятно, что значит влево. ты используешь строгие направления в 0/90/180/270 градусов? Или твой объект умеет поворачивать? Ходить стрейфом может быть? В простейшем случае, измененная скорость влево обозначает лишь измененную цифру скорости в ивенте кнопки "A" в wasd раскладке, и ничего большего. Назначение и применение твоей системы управления, лично мне, непонятны. Но однако, легко выделить участок кода, отвечающий за скорость влево: if left {hspeed-=1}; Замени 1 на 0.5. Вообще же, vspeed и hspeed - встроенные параметры для каждого объекта, которые устанавливают вертикальную и горизонтальную проекции скоростей соответственно.
Спасибо большое. Воспользуюсь вашем советом!
|
|
| |