Среда, 03 Июля 2024, 12:08

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос - Ответ (Game Maker)
elis1112Дата: Понедельник, 07 Мая 2012, 10:51 | Сообщение # 3141
Igni et ferro
Сейчас нет на сайте
kolyanez, вчера не успел залить, сейчас доделаю скину
kashey, как я понял, надо что бы с случайными точками можно было работать?
например
x1=100
y1=100
x2=200
y2=200
и например если в этот квадрат попадал предмет это можно было определить?

Добавлено (07.05.2012, 10:51)
---------------------------------------------
kolyanez, http://zalil.ru/33194958 вот пример исправлен

kolyanezДата: Понедельник, 07 Мая 2012, 16:18 | Сообщение # 3142
почетный гость
Сейчас нет на сайте
Quote (elis1112)
вот пример исправлен

Респект! Как я сам не додумался smile
kasheyДата: Понедельник, 07 Мая 2012, 18:39 | Сообщение # 3143
постоянный участник
Сейчас нет на сайте
Quote (elis1112)
kashey, как я понял, надо что бы с случайными точками можно было работать?
например
x1=100
y1=100
x2=200
y2=200
и например если в этот квадрат попадал предмет это можно было определить?

Именно. Я создаю произвольную область, с произвольным количеством точек. Эта область должна реагировать на действия игрока. Например запрещать движение по ней, или если это скажем вода, разрешить действие "плавать", но запрещать действие идти, требовать условие, при котором можно разрешить действие "плавать" и т.д.
elis1112Дата: Понедельник, 07 Мая 2012, 18:51 | Сообщение # 3144
Igni et ferro
Сейчас нет на сайте
kashey,
http://rghost.ru/37960288


Сообщение отредактировал elis1112 - Понедельник, 07 Мая 2012, 19:17
kasheyДата: Понедельник, 07 Мая 2012, 19:49 | Сообщение # 3145
постоянный участник
Сейчас нет на сайте
Спасибо конечно за желание, но до этого я и сам смог бы дойти smile

Проблема в том, что произвольная область на то и произвольная. В ней может быть пять, десять или двадцать точек, и образовывать такая фигура может помимо прямоугольника еще множество неправильных фигур, названия которых я не знаю smile
Твой метод работает только с прямоугольными областями. Если бы все было так легко, я бы не задал вопрос тут.
elis1112Дата: Понедельник, 07 Мая 2012, 19:51 | Сообщение # 3146
Igni et ferro
Сейчас нет на сайте
kashey, да так и знал что это слишком просто, с этим будет потяжелее smile
kasheyДата: Понедельник, 07 Мая 2012, 20:05 | Сообщение # 3147
постоянный участник
Сейчас нет на сайте
Проблема усложняется тем, что проверки на пересечение пространства между двумя точками недостаточно, это тоже можно реализовать. А как определить, что обьект находится внутри зоны, если он не пересекает ее границы?
Есть у меня задумка, можно рисовать пространство из примитива в сурфейс, потом из сурфейса делать спрайт и присваивать его обьекту, с которым потом можно проверять столкновения напрямую. Но вопервых это слишком затратно, а во вторых спрайт может получиться внушительных размеров, что как бы нежелательно, ведь у гм и так проблемы с рендером.
elis1112Дата: Понедельник, 07 Мая 2012, 20:15 | Сообщение # 3148
Igni et ferro
Сейчас нет на сайте
пришел к мнению что стандартными методами гм этого добиться проблемно, гораздо проще нарисовать в любом рисовщики спрайт с нужными формами и задать нулевую прозрачность
и прикрепить к объекту.
Хотя посижу еще полчасика подумаю хотя такое чувство что в пустую sad
kasheyДата: Понедельник, 07 Мая 2012, 20:17 | Сообщение # 3149
постоянный участник
Сейчас нет на сайте
Quote (elis1112)
Хотя посижу еще полчасика подумаю хотя такое чувство что в пустую

Я уже двое суток думаю smile
Без знания вышки мне точно не обойтись...
Chevron_7Дата: Понедельник, 07 Мая 2012, 20:42 | Сообщение # 3150
частый гость
Сейчас нет на сайте
А попробуй сделать каждой точке радиус. И когда 2 радиуса будут пересекатся они создадут что-то похожее на "более мощную" зону. И когда объект будет касаться 2 радиусов будет происходить необходимое тебе действие. Надеюсь доступно обьяснил, посколько с этим у меня не очень.

Скоростной интернет - это когда файл проще загрузить заново чем найти на жестком диске...

Сообщение отредактировал Chevron_7 - Понедельник, 07 Мая 2012, 20:46
kasheyДата: Понедельник, 07 Мая 2012, 20:58 | Сообщение # 3151
постоянный участник
Сейчас нет на сайте
Не подходит по одной простой причине. Я задаю произвольную область не от фонаря, а участки, которые не покрывает радиус окружности и участки которые он не захватывает для меня имеют ключевое значение.
ЙакудДата: Понедельник, 07 Мая 2012, 21:23 | Сообщение # 3152
участник
Сейчас нет на сайте
kashey, тебе нужно разбивать каждую область на треугольники. Для проверки вхождения точки в треугольник довольно просто написать. Куча формул есть джля этого.. Если рассматривать данный пример, то треугольника будут располагатясь вот так:

И проверяем столкновение с каждым треугольником фигуры, если хотя бы у одного есть, то значит точка лежит на данном многоугольнике


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
kasheyДата: Понедельник, 07 Мая 2012, 22:18 | Сообщение # 3153
постоянный участник
Сейчас нет на сайте
Гениально, блин! Как я сам не допер?!? smile
Спасибо за подсказку!
Chevron_7Дата: Вторник, 08 Мая 2012, 00:38 | Сообщение # 3154
частый гость
Сейчас нет на сайте
Эммх... И все же я не допер. Можно примерчик?

Скоростной интернет - это когда файл проще загрузить заново чем найти на жестком диске...
ЙакудДата: Вторник, 08 Мая 2012, 01:50 | Сообщение # 3155
участник
Сейчас нет на сайте
Chevron_7, это ты про пересечение фигуры и точки имеешь ввиду?)

"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0
Chevron_7Дата: Вторник, 08 Мая 2012, 08:36 | Сообщение # 3156
частый гость
Сейчас нет на сайте
Да.

Скоростной интернет - это когда файл проще загрузить заново чем найти на жестком диске...
kasheyДата: Вторник, 08 Мая 2012, 11:22 | Сообщение # 3157
постоянный участник
Сейчас нет на сайте
Вот достаточно интересная статья по вопросу, с не менее интересными комментариями. Особенно хорошо, что нет нужды строить фигуру из треугольников, алгоритм работает с фигурами любой формы.
Chevron_7Дата: Вторник, 08 Мая 2012, 16:32 | Сообщение # 3158
частый гость
Сейчас нет на сайте
А как сделать чтоб игрок мог сам устанавливать скорость мяча. Например, в комнате есть шар который движется вперед со скоростью 5, игрок нажимает <Enter>, всплывает окно (string), вводим туда, например 7 и скорость шара уже 7, а не 5 как было.

И еще вопрос - как кодом написать что мыш наводится на объект?


Скоростной интернет - это когда файл проще загрузить заново чем найти на жестком диске...
ЙакудДата: Вторник, 08 Мая 2012, 17:16 | Сообщение # 3159
участник
Сейчас нет на сайте
1) speed = get_integer("Enter speed", "");
Или так еще можно..
speed = real(get_string("enter speed", ""));
2) сделай проверку вхождения курсора в определенную область
Code
if(mouse_x>x && mouse_x < x+width && mouse_y > y && mouse_y < y+height)  
   // mouse on object
else  
   // mouse out object


"Хороший художник – копирует, гениальный – ворует!" — Pablo Picasso
.blanco 2.0


Сообщение отредактировал Йакуд - Вторник, 08 Мая 2012, 17:21
mster-docДата: Вторник, 08 Мая 2012, 19:49 | Сообщение # 3160
частый гость
Сейчас нет на сайте
Как фон вставить в игру?

"Программист это не професия, это стиль жизни" Мой папа))
Поиск:

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