Пятница, 26 Апреля 2024, 23:38

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 2
  • 1
  • 2
  • »
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Управление объектом мышью (С разгоном и торможением)
Управление объектом мышью
WarezReiterДата: Воскресенье, 18 Ноября 2012, 18:43 | Сообщение # 1
был не раз
Сейчас нет на сайте
Здравствуйте! Начал использовать GM недавно, так что в GML полный нуб...
Помогите реализовать такую схему:

1) Постоянное перемещение объекта мышью, как будто это курсор.
2) При движении мыши объект должен плавно начинать двигаться, а когда мышь останавливается, так же тормозить (как по льду).
3) При приближении к границе комнаты, он должен плавно тормозить вплоть до полной остановки у самой границы.

Спасибо...


The order comes in the chaos
MegaGameMasterДата: Понедельник, 19 Ноября 2012, 00:17 | Сообщение # 2
Посланик GAME MAKER'a
Сейчас нет на сайте
я только на первые 2 вопроса знаю ответы:


S.P.Q.R.

Сообщение отредактировал MegaGameMaster - Понедельник, 19 Ноября 2012, 00:20
WarezReiterДата: Понедельник, 19 Ноября 2012, 11:25 | Сообщение # 3
был не раз
Сейчас нет на сайте
Quote (MegaGameMaster)
у объекта в creat пишешь какую либо переменную например s=0 (это скорость с которой будет двигаться объект)
s=distance_to_point(mouse_x,mouse_y)/6(где 6 может быть любое число в зависимости на сколько ты хочешь замедлить движение объекта)
move_towards_point(mouse_x,mouse_y,s)
все чем могу....возможно есть другие способы.....может это даже не работает


Спасибо, всё работает smile
Держи +


The order comes in the chaos
zaicev9797Дата: Понедельник, 19 Ноября 2012, 12:16 | Сообщение # 4
AbRaKaDaBrA
Сейчас нет на сайте
а у меня вот имеется космосим, в нем кораблик летит за курсором ,а мне вот интересно:как сделать так чтоб кораблик не моментально поворачивал за курсором,а плавно"как по льду"типа ?

проект Mysterious Space. The losted moment
MegaGameMasterДата: Понедельник, 19 Ноября 2012, 15:51 | Сообщение # 5
Посланик GAME MAKER'a
Сейчас нет на сайте
zaicev9797, просто в step кораблика пишешь move_towards_point(mouse_x,mouse_y,100) где 100 -скорость кораблика может быть любое значение.
или ты имеешь в виду чтобы кораблик двигался по траектории по которой прошел курсор?


S.P.Q.R.
ErrantBugДата: Понедельник, 19 Ноября 2012, 16:51 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Quote (zaicev9797)
как сделать так чтоб кораблик не моментально поворачивал за курсором,а плавно"как по льду"типа ?
Вколи ему десять кубиков чистой наркоты. Его так штырить начнет, что даже на грунтовой дорожке, как по льду покатится!

А если серьезно, то достаточно просто поиграться с переменной speed. Ну то есть:
Code
if distance_to_point(mouse_x,mouse_y)>200 {
if speed<6 speed+=0.5
}
else {
if speed>0 speed-=0.5
}


zaicev9797Дата: Вторник, 20 Ноября 2012, 11:32 | Сообщение # 7
AbRaKaDaBrA
Сейчас нет на сайте
вы меня немного неправильно поняли,мне нужно чтобы у моего кораблика была опр.управляемость, ато получается если курсор пронести через середину спрайта то он мгновенно развернется на180,а мне надо чтобы он разворачивался медленней

проект Mysterious Space. The losted moment
ErrantBugДата: Вторник, 20 Ноября 2012, 11:53 | Сообщение # 8
постоянный участник
Сейчас нет на сайте
Quote (zaicev9797)
а мне надо чтобы он разворачивался медленней
Все мы правильно тебя поняли.




Сообщение отредактировал ErrantBug - Вторник, 20 Ноября 2012, 11:58
zaicev9797Дата: Вторник, 20 Ноября 2012, 12:29 | Сообщение # 9
AbRaKaDaBrA
Сейчас нет на сайте
НЕТ.Это вы мне дали пример, как с помощью курсора управлять скоростью корабля,

проект Mysterious Space. The losted moment
MegaGameMasterДата: Вторник, 20 Ноября 2012, 17:51 | Сообщение # 10
Посланик GAME MAKER'a
Сейчас нет на сайте
imge_angle=point_direction(корабль.x,корабль.y,mouse_x,mouse_y)
напиши это в Step коробля


S.P.Q.R.
zaicev9797Дата: Среда, 21 Ноября 2012, 11:47 | Сообщение # 11
AbRaKaDaBrA
Сейчас нет на сайте
у меня все так и есть, но если понести курсор через центр спрайта получается вот так:

---> o
o <---

а надо вот так
---> o
o \
....\

o /
../

o <---
стрелки- направление корабля.
o- курсор
А то что ты мне написал у меня уже есть в степе


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Среда, 21 Ноября 2012, 11:48
MegaGameMasterДата: Четверг, 22 Ноября 2012, 23:22 | Сообщение # 12
Посланик GAME MAKER'a
Сейчас нет на сайте
zaicev9797, тогда забей

S.P.Q.R.
zaicev9797Дата: Пятница, 23 Ноября 2012, 12:41 | Сообщение # 13
AbRaKaDaBrA
Сейчас нет на сайте
тоесть нельзя? surprised

Добавлено (23.11.2012, 12:41)
---------------------------------------------
а можно сделать так чтобы хотябы враги не могли так резко менять направление?


проект Mysterious Space. The losted moment
Raven84Дата: Пятница, 23 Ноября 2012, 13:58 | Сообщение # 14
старожил
Сейчас нет на сайте
zaicev9797,Помимо этого в Step
Quote
imge_angle=point_direction(корабль.x,корабль.y,mouse_x,mouse_y)

нужно еще и direction указать.Он у тебя будет скорее всего:
direction=image_angle

Добавлено (23.11.2012, 13:58)
---------------------------------------------
Хотя я и не совсем понял,что тебе надо (все не читал),но думаю это оно. smile


Super Knight Story (в разработке)
Idolzzz - игра доступна в Steam и Play Market
Oliver's Adventures in the Fairyland


Сообщение отредактировал Raven84 - Пятница, 23 Ноября 2012, 13:58
zaicev9797Дата: Пятница, 07 Декабря 2012, 09:24 | Сообщение # 15
AbRaKaDaBrA
Сейчас нет на сайте
к сожалению нет

проект Mysterious Space. The losted moment
ShadowZiДата: Пятница, 07 Декабря 2012, 09:32 | Сообщение # 16
постоянный участник
Сейчас нет на сайте
Quote (zaicev9797)
тоесть нельзя?

В нормальных движках вроде как есть такое понятие как локальные координаты. В этом случае надо сохранять тягу вперёд в локальных координатах. То есть он всё время сохраняет движение вперёд но по мере поворота вектор вперёд меняется и получается дуга.

Вот как примеру я делал во флеше в недоделанной леталке (шифт форсаж на короткое время, мышь направление и стрельба)
https://dl.dropbox.com/u/26347574/gamez/stepshooter.swf
[не обращайте внимание на землю, что она в воздухе -> тестировал и отлаживал систему повреждения, ну и серый прямоугольник вокруг самолёта - визуализированный хит бокс].

Если локальных координат нет то можно зная какая скорость вперёд через синусы и косинусы получить скорость по осям.


Сообщение отредактировал ShadowZi - Пятница, 07 Декабря 2012, 09:34
zaicev9797Дата: Пятница, 07 Декабря 2012, 10:03 | Сообщение # 17
AbRaKaDaBrA
Сейчас нет на сайте
но Я гне в курсе есть ли такое понятие в гм

или может быть можно как-то замутить через роут спид?


проект Mysterious Space. The losted moment

Сообщение отредактировал zaicev9797 - Пятница, 07 Декабря 2012, 10:07
ShadowZiДата: Пятница, 07 Декабря 2012, 10:21 | Сообщение # 18
постоянный участник
Сейчас нет на сайте
Quote (zaicev9797)

или может быть можно как-то замутить через роут спид?

Попробуй в ГМ, я не силён. Но решение с раскладкой по осям прокатит везде.

Есть кстати ещё одна вещь, когда вспомнил про манёвренность. Если просто задавать скорость, то он будет разворачиваться не на месте а по дуге. Тот код как я понял постоянно держит в прицеле объект. В итоге дуга может получится очень маленькой может даже в виде точки.

Возможно ещё одним способом получить скорость разворота, которую я там тоже использовал (чтобы можно было прокачивать типа манёвренность). Узнай есть ли функции которые в ГМ разворачивают объект с определённой скоростью. Во флеше такого нет, поэтому у меня там каждый кадр(физики нет вообще всё свой родное)), я поворачиваю спрайт на определённый угол, до тех пор пока угол поворота спрайта, не станет близко в каких-то пределах углу который составляет направление на мышку и вектор строго вправо в глобальных координатах (благо во флеше есть функция, которая позволяет это узнать, но если что через синусы и косинусы можно получить и его зная координаты мышки и текущего положения спрайта)).
Варьируя ту прибавку каждый кадр, получаем разное время с которым разворачивается спрайт и тем самым разную манёвренность)
ChelovekДата: Воскресенье, 13 Апреля 2014, 14:16 | Сообщение # 19
уже был
Сейчас нет на сайте
Второй день в гм. Пытаюсь сделать игру в изометрии. вот как тут
ГГерой будет поворачиваться в 8 направлениях.

Подскажите, пожалуйста, как сделать, чтобы герой поворачивался за курсором мыши.
А точнее, чтобы менялись спрайты, когда я водил мышью вокруг него.

Можно высчитывать по углам от оси Х героя до курсора иыши.
от 0 до 45 градусов - спрайт_1
от 45 до 90 градусов - спрайт 3
от 90 до 135 градусов - спрайт_3
и т.д.

Но как можно посчитать угол?

Добавлено (13.04.2014, 14:16)
---------------------------------------------
Все. разобрался. Через point_direction

ЯмейкерДата: Понедельник, 23 Апреля 2018, 01:46 | Сообщение # 20
уже был
Сейчас нет на сайте
Цитата WarezReiter ()
2) При движении мыши объект должен плавно начинать двигаться, а когда мышь останавливается, так же тормозить (как по льду).

Я знаю как сделать, чтобы при движении мыши происходило действие:
Нужно в событии create сделать три переменные: mousebotx=0 mouseboty=0 time_mouse=0
Затем в этом же объекте в событии степ написать код:

time_mouse+=1 if time_mouse=1{mousebotx=mouse_x
mouseboty=mouse_y} if time_mouse>2{if mouse_x!=mousebotx or
mouse_y!=mouseboty{...Действие...} time_mouse=0}

Если подумать, то из этого можно сделать и наоборот, когда мышь стоит на месте...
Вместо if mouse_x!=mousebotx or mouse_y!=mouseboty написать if mouse_x=mousebotx and mouse_y=mouseboty
Думаю как тормозить и плавно двигаться ты знаешь.


Сообщение отредактировал Ямейкер - Понедельник, 23 Апреля 2018, 02:19
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker » Управление объектом мышью (С разгоном и торможением)
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:

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