Понедельник, 25 Ноября 2024, 23:09

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Движение в пределах радиуса
Dat_SpyДата: Понедельник, 23 Февраля 2015, 22:28 | Сообщение # 1
частый гость
Сейчас нет на сайте
Как сделать чтобы объект двигался за мышью но НЕ выходил за пределы установленного радиуса? Проще выражаясь мышь должна работать как магнит, а объект - скрепка в коробке
AnthemДата: Понедельник, 23 Февраля 2015, 23:33 | Сообщение # 2
Д'Артаньян
Сейчас нет на сайте
Чтобы не выходил за пределы:
Код
x = median(100, x, 200);
y = median(100, y, 200);


Текстовый контент для вашей игры (бесплатно)
Сценарист, геймдизайнер для Вашей игры
Dat_SpyДата: Вторник, 24 Февраля 2015, 11:21 | Сообщение # 3
частый гость
Сейчас нет на сайте
Anthem, Спасибо. А возможно ли сделать пределы округлыми?
Fill_FreemanДата: Вторник, 24 Февраля 2015, 13:48 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Dat_Spy, у меня есть идея просто использовать проверку.
Например:

c_x; c_y - координаты центра окружности.
r - ее радиус.

Каждый раз изменяя координату проверяешь дистанцию от объета до центра

Код
if (point_distance(x_new,y_new, c_x, c_y) > r) {
  x = x_new;
  y = y_new;
}


Это только пример - логику можешь организовать как угодно.


OpenGOOДата: Вторник, 24 Февраля 2015, 15:03 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
У меня код посложнее будет

cx, cy - центр круга
rad - радиус круга
sp - скорость движения объекта

Код
var dx = mouse_x - x
var dy = mouse_y - y
var len = sqrt(dx*dx + dy*dy)
x += dx / len * sp
y += dy / len * sp
if rectangle_in_circle(bbox_left, bbox_top, bbox_right, bbox_bottom, cx, cy, rad) = 2
     {
     x = xprevious
     y = yprevious
     }


Мои проекты:
- Свободный и открытый клон World Of Goo
- TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)

[GameMaker: Studio v1.4.9999]
YellowAfterlifeДата: Среда, 25 Февраля 2015, 19:08 | Сообщение # 6
Сейчас нет на сайте
После перечитывания темы у меня закрадываются подозрения, что я не очень правильно понял вопрос, но вот:

(файл GMK)

Добавлено:
Хотя можно получить искомый результат если устанавливать magnet_x/y на "точку крепления" а x/y объекта на mouse_x/y (до применения кода магнита):




Сообщение отредактировал YellowAfterlife - Среда, 25 Февраля 2015, 19:14
  • Страница 1 из 1
  • 1
Поиск:

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