RS Game Maker Community
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

 
Расширенный поиск
  Главная  Форум   Вики Блоги FAQ Игры Статьи Примеры Войти Регистрация  
Вики
Все желающие приглашаются редактировать вики. Можете писать о своих (или чужих) играх, размещать туториалы, постить статьи - главное навесить категорию.
Страниц: 1 ... 352 353 354 355 356 357 358 359 360   Вниз
  Печать  
Ответы@Gmakers.ru — все вопросы сюда
0 Пользователей и 2 Гостей смотрят эту тему.
deathsoul
дезсоул
Ветеран форума
*****

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

Награды:
Легенда сайта
Сообщений: 1 853


21 Апреля 2011 в 01:14
Чтобы не было тем с вопросами, которые содержат всего два-три сообщения, все свои вопросы задавайтесь здесь. Если вопрос окажется слишком сложным для общей темы, модераторы всегда могут вынести обсуждение в отдельную тему.
Для этой темы действуют те же правила, что и для всего раздела, так что перед тем, как задать вопрос, обязательно ознакомьтесь с этой темой: «Ознакомьтесь, прежде чем задать вопрос». И не забудьте проверить, нет ли ответа на ваш вопрос в FAQ по Game Maker.
Последнее редактирование: 13 Октября 2013 в 19:01 от Огион
 
Likantrop
Завсегдатай
****

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

Награды:
Cоздатель вселенной
Сообщений: 509


Эту аву я сам нарисовал! Бебебе!

Ответ № 7101 13 Апреля 2017 в 10:11
Салют, господа, если кто-то меня еще помнит.

У меня вопрос. Сам в небольшой тупик встал.

Есть круглая планета. По ней передвигается враг. То, куда он перемещается, определяется в зависимости от "целевых" координат goal_x и goal_y. Мы можем регулировать только сторону его движения: dir=-1 - идет влево, dir=1 идет вправо.

Вопрос: как определить, в какую сторону должен идти враг (чтобы путь был короче)? Я пытался делать вот так, но не выходит:

if distance_to_point(goal_x,goal_y)>10{
if goal_x>x &&  goal_y>y {dir=1;}
if  goal_x>x && goal_y<y {dir=-1;}
if  goal_x<x && goal_y>y {dir=-1;}
if  goal_x<x && goal_y<y {dir=1;}}

К слову, точка goal_x и goal_y находится не точно на поверхности планеты, к сожалению, ее метод определения так работает, что она немного дрейфует, то над планетой, то в нее.
На рисунке goal_x,goal_y отмечена оранжевым. Планеты - не идеально круглые, а бывают и со всякими рытвинами-горками.
Прикреплённые файлы Графические миниатюры:
ГоК
Начинающий
Старожил
******

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

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7102 13 Апреля 2017 в 10:54
Через косое произведение векторов можно найти.

Сначала строишь вектор цели относительно планеты:
var goal_vecX, goal_vecY;
goal_vecX = goal_x-planet_x;
goal_vecY = goal_y-planet_y;

То же самое для врага:
var enem_vecX, enem_vecY;
enem_vecX = x-planet_x;
enem_vecY = y-planet_y;

А дальше самый сок:
if( ( goal_vecX*enem_vecY - enem_vecX*goal_vecY ) > 0 )
    dir = 1;
else
    dir = -1;
Likantrop
Завсегдатай
****

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

Награды:
Cоздатель вселенной
Сообщений: 509


Эту аву я сам нарисовал! Бебебе!

Ответ № 7103 13 Апреля 2017 в 14:08
Спасибо большое, все получилось. Только в конце dir=1 и dir=-1 поменять местами надо.

Честно говоря, не понял, как это сработало. Почитал на вики про псевдоскалярное произведение и тоже не особо понял. Не можешь, если не затруднит, чуть-чуть пояснить для общего развития?
ГоК
Начинающий
Старожил
******

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

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7104 13 Апреля 2017 в 16:37
Главное, что тебе нужно знать о косом произведении — это его геометрические свойства.
Например, есть у тебя два вектора: OA и OB. Так вот, результатом их косого произведения [OA, OB] будет ориентированная площадь параллелепипеда OAO'B:

* Косое произведение.png (4.18 Кб. 192x192 - просмотрено 68 раз.)

"Ориентированная" значит, что знак площади будет положительным, если второй вектор лежит левее основного, и наоборот — отрицательным, если второй вектор лежит правее основного (для GameMaker'а всё наоборот, потому что ось Y направлена вниз, а не вверх).

В твоём случае именно свойством ориентированности мы и воспользовались. Просто разделили планету на две половины через "цель" и посмотрели в какой половине оказался враг.

* пример.png (7.86 Кб. 192x192 - просмотрено 74 раз.)
Прикреплённые файлы Графические миниатюры:
Последнее редактирование: 13 Апреля 2017 в 22:34 от ГоК
Mordanius
Активный участник
**

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

Сообщений: 168


Старый казуал =(

Ответ № 7105 16 Апреля 2017 в 01:34
Вопрос такой - можно ли при помощи стандартного pathfinding'а реализовать зоны контроля? В пошаговой боевой системе. Или ткните носом в подходящий плагин.
Vovan1802
Активный участник
**

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

Сообщений: 132

Ответ № 7106 16 Апреля 2017 в 12:38
Vovan1802,
Попробуй выбрать Any device supported в графе Device Support.
Какая версия Гамака? Я так понимаю, не последняя. Нету некоторых опций.
Any device supported не помогло((( Версия GMS 1.4.1757
Огион
Завсегдатай
****

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

Сообщений: 964


Ответ № 7107 16 Апреля 2017 в 17:11
Mordanius, а что ты подразумеваешь под зонами контроля?
Mordanius
Активный участник
**

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

Сообщений: 168


Старый казуал =(

Ответ № 7108 17 Апреля 2017 в 23:41
Таое понятие в тактических / стратегических пошаговых играх. Когда движение на соседнюю с противником клетку блокирует ход персонажа. Входить в зону контроля врага можно, двигаться через нее - нельзя.

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

З.Ы. Как переписать самому астар на гамаке? Какие дата-структуры использовать? Openset - очередь с приоритетом, а с closed'ом что делать? Может, кто пример подкинет? В общем, я пока остановился на переделке волнового алгоритма.
ГоК
Начинающий
Старожил
******

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

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7109 18 Апреля 2017 в 13:20
Райдо же делал пример поиска пути со стоимостями прохождения...
Во http://gmakers.xyz/index.php?topic=5514.0
tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 491


moonlite

Ответ № 7110 18 Апреля 2017 в 13:51
Так ему по квадратам нужно.

ГоК
Начинающий
Старожил
******

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

Награды:
Легенда сайтаЗа интересные проекты
Сообщений: 2 038


Ответ № 7111 18 Апреля 2017 в 16:49
Одно и то же почти. Запрети ходить по диагонали - и будут квадраты.
tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 491


moonlite

Ответ № 7112 18 Апреля 2017 в 16:57
Вообще-то по квадратам по диагоналям ходить можно, но дороже в корень из двух раз.

Mordanius
Активный участник
**

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

Сообщений: 168


Старый казуал =(

Ответ № 7113 18 Апреля 2017 в 22:28
Всем сасибо, особенно Райдо. Буду перепиливать пример.
Огион
Завсегдатай
****

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

Сообщений: 964


Ответ № 7114 18 Апреля 2017 в 23:57
Таое понятие в тактических / стратегических пошаговых играх. Когда движение на соседнюю с противником клетку блокирует ход персонажа. Входить в зону контроля врага можно, двигаться через нее - нельзя.
Это сделать достаточно просто: алгоритм поиска пути должен интерпретировать клетки под контролем врага как препятствия. Достаточно даже встроенного поиска пути.
Mordanius
Активный участник
**

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

Сообщений: 168


Старый казуал =(

Ответ № 7115 23 Апреля 2017 в 01:49
  Еще надо будет проверять каждую клетку на соседство с врагом. Иначе нельзя будет на ходить на них. Но вообще да, можно и так сделать.
Silen
Старожил
******

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

Награды:
Легенда сайта
Сообщений: 2 483


Indie Game Developer

Ответ № 7116 25 Апреля 2017 в 05:17
Vovan1802,
Попробуй выбрать Any device supported в графе Device Support.
Какая версия Гамака? Я так понимаю, не последняя. Нету некоторых опций.
Any device supported не помогло((( Версия GMS 1.4.1757
Последняя стабильная версия 1.4.1763
В 1760 было очень много фиксов для Андроида, включая критические.

Don't tell why, tell why not.
Vovan1802
Активный участник
**

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

Сообщений: 132

Ответ № 7117 25 Апреля 2017 в 15:15
Ребята, подскажите что не так. В общем история такая. Есть комната (1024х768). В комнате находится объект. Он движется вместе с курсором, ну как бы прикреплен к курсору
в  
x=mouse_x
 y=mouse_y

 Так же присутствует приближение и отдаление вида комнаты с помощью колесика мыши

в прокрутке вперед
 
if view_wview > global.minview
{ view_wview -= 20; //(4:3)
 view_hview -= 15;
 view_hborder = view_wview div 2;
 view_vborder = view_hview div 2;
}

в прокрутке назад
if view_wview < global.maxview
{ view_wview += 20; //(4:3)
 view_hview += 15;
 view_hborder = view_wview div 2;
 view_vborder = view_hview div 2;
}
В   вот это
global.minview = 300;
global.maxview = 1200;
Пример приближения/отдаления с помощью колесика я нашел на форуме, но не совсем понял как это работает. Там еще по паре строчек было, но с ними ничего не работало вообще. В настройках комнаты вид прикреплен к этому объекту. Сейчас все вроде работает, но не совсем так, как надо. Если масштаб на минимуме (вся комната видна на экране), то я могу передвинуть объект в любую точку комнаты, но если я приближаю, то вид прикрепляется к ближайшему краю комнаты, и получается что в дальний угол я уже не могу передвинуть предмет. Точнее могу, но в таком случае вид опять же прикрепится к ближайшему краю комнаты. Мне надо, чтобы приближение работало относительно координаты объекта, а не краев комнаты. Получается сейчас я не могу передвинуть объект в определенную координату при увеличенном масштабе, так как эта координата сразу соскакивает. А если в настройках комнаты отключить привязку вида к объекту, то приближение работает только относительно верхнего левого угла. Подскажите, как быть. Заранее спасибо
Vovan1802
Активный участник
**

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

Сообщений: 132

Ответ № 7118 25 Апреля 2017 в 16:37
Не совсем правильно описал проблему. Когда масштаб увеличен, и мышь с объектом находится в нижней части экрана, то камера спускается в нижнюю часть экрана до упора, когда поднимаю выше середины экрана, камера поднимается вверх, пока не упрется в стенку комнаты. Аналогично и с боковыми стенками
Илья
Ветеран форума
*****

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

Сообщений: 1 522

Ответ № 7119 25 Апреля 2017 в 17:49
Чуваки, а где константы в GSM2? Жить без них не могу, блин.

tolich
to ne lich
Ветеран форума
*****

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

Сообщений: 1 491


moonlite

Ответ № 7120 25 Апреля 2017 в 18:29
@Vovan1802
x=mouse_x
y=mouse_y
view_xview=x-view_wview div 2
view_yview=y-view_hview div 2
Если ничего не напутал.

@Илья: как ты пережил GMS 1, там же констант не было?

Страниц: 1 ... 352 353 354 355 356 357 358 359 360   Вверх
  Печать  
 
Перейти в:  

RSGMC (gmakers.ru) © 2007—2017
Счётчик–@Mail.ru