Game Maker - создание игр | HellRoom Games
Ноябрь 18, 2025, 04:06:07 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
Новости:
 
   Начало   Game Maker Помощь Правила форума Поиск Календарь Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: перемещение объекта за курсором по X и привязка к другому объекту по Y  (Прочитано 1945 раз)
0 Пользователей и 1 Гость смотрят эту тему.
ambush
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 2


« : Февраль 23, 2021, 00:16:54 »

При нажатии на пкм создается объект (oCloud), и, пока кнопка зажата, он перемещается за курсором.
Следование за курсором по X задать легко
Проблема в том, что по Y нужно привязать oCloud на определённой высоте от объекта стены (oWall), причем, если существует 2 объекта oWall на разной высоте, oCloud должен быть над тем oWall, над которым курсор.
Вот как это задать, я в тупике. Подскажите, хотя бы, в сторону каких команд смотреть в мануал.
Записан
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #1 : Февраль 23, 2021, 08:20:08 »

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

collision_line_list
Записан

         
Да, на них можно кликать.
ambush
Новичок
*

Репутация: 0
Offline Offline

API: GameMaker Studio 2
Сообщений: 2


« Ответ #2 : Февраль 23, 2021, 12:26:50 »

Благодарю. Вот что получилось

Всё работает, туча перемещается за курсором по Х и привязывается к ближайшему снизу объекту стены по Y.
Но, так как только осваиваю науку, думаю, есть замечания. Буду рад.

В частности, нужно ли добавлять удаление списка, если он записывается в локальную переменную в рамках if?
Записан
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #3 : Февраль 23, 2021, 14:00:25 »

Все верно, только нужно обработать вариант, когда _num оказался равным 0. Т.к. в таком случае переменная _obj окажется не инициализированной и при обращении к ней на следующей строчке
Код:
y = _obj.y - 10;
произойдет краш.

ds_list нужно уничтожать, даже если идентификатор был записан во временную переменную.
Массивы и структуры подчистит сборщик мусора, а ds_* структуры нужно удалять самостоятельно.
Записан

         
Да, на них можно кликать.
Fur
Абы-какой
GM Pro user
*

Репутация: 463
Offline Offline

Пол: Мужской
Награды:
3000 сообщений!За постоянность! [500 дней на форуме]Третье место на HellRoom Jam #9 [Flucoldache]За лояльность! [+300 репутации]Настоящий игродел!Боже мой, посмотрите на эту медальку! Первое место на HellRoom Jam #6
API: Game Maker 8.0 Lite
Деятельность: Бурная.
Сообщений: 3673


Лисяток тебе.


« Ответ #4 : Февраль 23, 2021, 20:20:46 »

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

collision_line_list
Ну фил, ну что это за гадость. Не надо никаких коллизий. Стена по вертикали описывается шириной и центром. Вот и считаем: если есть пересечение этой линии с юнитом, берём его высоту. Гугли пересечение точки и прямоугольника.
Записан

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

Hyperflex
SilentPhil
Norland
GM Pro user
*

Репутация: 479
Offline Offline

Пол: Мужской
Награды:
Первое место на HellRoom Jam #7 [Hell in Your Fridge]500 сообщений!За постоянность! [50 дней на форуме]За лояльность! [+150 репутации]Настоящий игродел!Второе место на HellRoom Jam #6 [По следам Артакса]...
API: GameMaker Studio 2
Деятельность: GML, Pixel Art
Сообщений: 1363



WWW
« Ответ #5 : Февраль 23, 2021, 21:06:31 »

На одной оси y может быть несколько стен, нужно рисовать облако только относительно самой верхней. Коллизия линией - самый простой для понимания вариант, не нужно ничего сортировать руками, все на ладони.
Записан

         
Да, на них можно кликать.
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

HellRoom Games © 2006-2012 All Rights Reserved
Powered by SMF 1.1.21 | SMF © 2013, Simple Machines
Страница сгенерирована за 0.092 секунд. Запросов: 29.