Вверх ↑
Этот топик читают: Гость
Ответов: 5446
Рейтинг: 323
#1: 2010-05-15 11:31:38 ЛС | профиль | цитата
Решил изучить эту новую (для меня) фишку пакета. Штатные примеры (для меня) слишком запутанные, хотелось бы два простых примера:
  • Неподвижный спрайт (лучше - два)
  • "мячик в коробке" (спрайт, отражающийся от краёв формы)

Плюс есть ряд вопросов:
1. Как взаимодействовать со спрайтом с помощью мыши?
2. Как отрабатывать "многерные" (тройные и более) коллизии?

Заранее спасибо!
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2010-05-15 14:45:48 ЛС | профиль | цитата
Пример вывода стпайтов - статический и с анимацией
code_18259.txt

отражение от краев формы
code_18260.txt

iarspider писал(а):
Как взаимодействовать со спрайтом с помощью мыши?

для определения попадания мышью в спрайт использовать PointInRect

iarspider писал(а):
Как отрабатывать "многерные" (тройные и более) коллизии?

каждое пересечение спрайта с другим объектом сцены пораждает событие onHitX или onHitY, которое выдает в поток ID объекта и ссылку на него. Соответственно проверка ID на конкретное значение позволит управлять каждым столкновением в отдельности.
карма: 27
1
файлы: 2code_18259.txt [2.5KB] [364], code_18260.txt [2.7KB] [413]
Голосовали:iarspider
Ответов: 876
Рейтинг: 101
#3: 2010-05-15 16:06:07 ЛС | профиль | цитата
Можно доработать спрайты что бы динамически загружать массивы или хотя бы отдельной спрайты, а то чтобы заменить картинку спрайта приходиться все пере компилировать
карма: 1

0
Ответов: 4641
Рейтинг: 334
#4: 2010-05-15 19:49:09 ЛС | профиль | цитата
А мне хотелось бы видеть просто элемент "Рикошет", так было бы более понятно.
Задал в свойствах с какими объектами проверять коллизии и все. Столкнулся, отразился.
А так же элемент "гравитация", "прыжок" итд как во многих игровых движках.
Собственно понимаю что написал для галочки, но это так вдруг появятся доработчики Game Engine

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

Еще сложно отлаживать схемы. Ставишь Дебаг и схема виснет или рантайм.
Бывало так зависнет, что только ресет один ответ.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 5446
Рейтинг: 323
#5: 2010-05-15 20:16:53 ЛС | профиль | цитата
ЧЯДНТ?

code_18268.txt


карма: 1

0
файлы: 1code_18268.txt [6.3KB] [273]
Ответов: 2271
Рейтинг: 677
#6: 2010-05-16 01:16:56 ЛС | профиль | цитата
003 и 004 GE_SpriteMove Sprite = (empty)
code_18274.txt
Если понажимать на add (раз 10-20) можно понаблюда за жизнью в муравейники .
карма: 11

1
файлы: 1code_18274.txt [5.4KB] [377]
Голосовали:iarspider
Администрация
Ответов: 15295
Рейтинг: 1519
#7: 2010-05-16 02:20:49 ЛС | профиль | цитата
Ravilr писал(а):
Еще есть сложности в понимании защиты ресурсов. Ну не должен разработчик отвлекаться на технические моменты... что где зачем защищать..
Еще сложно отлаживать схемы. Ставишь Дебаг и схема виснет или рантайм.

Ravilr, если это так хочется реализовать в схеме, то не нужно использовать MMTimer. Все выше описанные проблемы происходят только от того, что используется поток. Сделать работу с просчетом сцены и ее отрисовкой полностью прозрачной можно только в том случае, если добавить элемент GE_PaintBox, который который ту же самую синхронизацию сделает внутри себя. Но это не избавит нас от повторения проблемы в схеме, в которой разработчик из основного цикла решит что-то еще изменить на форме. Поэтому скрыть потоки на базе существующего схемотехнического подхода невозможно в принципе - аукнется в любом случае.
карма: 27
0
Ответов: 5446
Рейтинг: 323
#8: 2010-05-16 10:24:53 ЛС | профиль | цитата
sla8a, спасибо! И всё же, походу, нужную логику на GE не сделать - слишком запутанная будет схема. Но в этом есть и плюс - можно будет изучить PyGame.
карма: 1

0
Администрация
Ответов: 15295
Рейтинг: 1519
#9: 2010-05-16 12:15:13 ЛС | профиль | цитата
конечно же для игрового движка нужно прикручивать что-то готовое - с нормальной физикой и отрисовкой спрайтов в DirectX и OpenGL.
карма: 27
0
Ответов: 5446
Рейтинг: 323
#10: 2010-05-16 16:38:28 ЛС | профиль | цитата
Dilma, там физики нет - одна химия ;) Проблема в том, что у игры есть три разных состояния: добавление объектов так, чтобы не было коллизий; перемещение объектов (захват мышкой, до отпускания проверки на столкновения отключены); отпускание объекта - с проверкой коллизии и (если соответствует правилам) удаление объектов (плюс иногда удаление объекта определённого типа, находящегося где-то ещё в поле). Количество типов объектов - 170, для каждого свой набор правил взаимодействия с остальными.
карма: 1

0
Ответов: 4
Рейтинг: 2
#11: 2010-05-17 22:24:05 ЛС | профиль | цитата
1 А как создать новый спрайт во время выполнения программы?
2 Есть ли возможность дублировать спрайты?
3 Можно ли реализовать отдельную точку для задания имени спрайта?
карма: 0

0
Ответов: 4641
Рейтинг: 334
#12: 2010-05-17 22:30:49 ЛС | профиль | цитата
Antender,
1. Смотри примеры выше. Там как раз создаются спрайты во время выполнения программы
2. Смотри примеры выше. Там как раз дублируются спрайты во время выполнения программы
3. А зачем?
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 4
Рейтинг: 2
#13: 2010-05-17 23:05:31 ЛС | профиль | цитата
1 Не создаются - там количество спрайтов жёстко заданы
2 Не дублируются - только перемещаются
3 Чтобы можно было менять выводимые на экран объекты, либо требуется метод создания спрайта.

У спрайта есть метод doDestroy, но нет doCreate

карма: 0

0
Ответов: 5446
Рейтинг: 323
#14: 2010-05-17 23:07:07 ЛС | профиль | цитата
Antender, это всё делается через GE_SpriteArray
карма: 1

1
Голосовали:Antender
Ответов: 4
Рейтинг: 2
#15: 2010-05-17 23:10:42 ЛС | профиль | цитата
Так GE_SpriteArray просто контейнер для спрайтов - у него ни одного метода нет
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)