Четверг, 28 Марта 2024, 20:34

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Управление в GMS
Управление в 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. Мой тебе совет - если используешь скольжение (да и если не используешь biggrin ) пиши не -= (когда хочешь отрицательное значение придать), а =-. Хотя - твои проблемы, но могут быть баги со скоростью. Так как с -= будет просто убавлять у переменной введенное значение, а с =- - придавать отрицательное.


А звезды, будто мириады стрел,
Ловя на мушку силуэты снов.
Смеется и злорадствует любовь,
И мы с тобой попали в их прицел...


Сообщение отредактировал 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 - встроенные параметры для каждого объекта, которые устанавливают вертикальную и горизонтальную проекции скоростей соответственно.


Спасибо большое. Воспользуюсь вашем советом!
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Управление в GMS
  • Страница 1 из 1
  • 1
Поиск:

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