Анимация вращения карт
|
|
uriage | Дата: Воскресенье, 04 Октября 2015, 23:47 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Всем привет.
Сделал игру - примитивную : раскладываются карты на экране в сетке 5*5. Надо найти 3 одинаковые - нажимая на них. Кто-нибудь занимался вопросом анимации вращения карт? Нигде не могу найти информации по этой теме. Может быть толкнете - где, куда смотреть?
Заранее спасибо.
|
|
| |
Quad69 | Дата: Понедельник, 05 Октября 2015, 00:02 | Сообщение # 2 |
заслуженный участник
Сейчас нет на сайте
| Если надо что бы карты просто крутились, то пиши image_angle+=5 Вот простой пример: Код if select {image_angle+=5}
|
|
| |
martuk | Дата: Понедельник, 05 Октября 2015, 06:19 | Сообщение # 3 |
заслуженный участник
Сейчас нет на сайте
| Есть два варианта. Либо вручную анимировать до момента когда ребро будет смотреть на тебя, а затем сделать подмену на анимацию нужной карты, или еще легче сделать в 3d.
|
|
| |
LunarPixel | Дата: Понедельник, 05 Октября 2015, 07:29 | Сообщение # 4 |
старожил
Сейчас нет на сайте
| Можно сначала сжимать спрайт карты, до тех пор, пока он не превратится в полоску (повернется ребром к игроку), а затем разжимать, подменив спрайт, чтобы уже другая сторона смотрела вверх. Я так для своего проекта делал, вот тут, у пирата, можно заметить, как это выглядит: https://youtu.be/4cCw_znRHMI?t=1m8s
|
|
| |
uriage | Дата: Понедельник, 05 Октября 2015, 16:02 | Сообщение # 5 |
был не раз
Сейчас нет на сайте
| Хотелось бы, чтобы это выглядело так : http://davidwalsh.name/demo/css-flip.php
Как следствие спрайт надо заключить в некую плоскость, и у этой плоскости уменьшать ширину, увеличивая высоту левой стороны и уменьшая высоту правой стороны.
Реально ли так "издеваться" над спрайтом ?
|
|
| |
Quad69 | Дата: Понедельник, 05 Октября 2015, 18:30 | Сообщение # 6 |
заслуженный участник
Сейчас нет на сайте
| Цитата uriage ( ) Реально ли так "издеваться" над спрайтом ? Да. Сделай спрайт карты с двух сторон(кадр 0 - Одна сторона, кадр 1 - Вторая сторона) Код в step Код if image_xscale<0 {image_index=1}else{image_index=0} И например в событии когда мышка наведена на карту пиши: Код if image_xscale>-1 {image_xscale-=0.05} И когда НЕ наведена Код if image_xscale<1 {image_xscale+=0.05} Должно получится
|
|
| |
LunarPixel | Дата: Понедельник, 05 Октября 2015, 19:08 | Сообщение # 7 |
старожил
Сейчас нет на сайте
| maksim1221232, смотри внимательнее, что требуется.
uriage, для такого эффекта есть вариант, разве что, делать примитив, на него натягивать текстуру карты и уже им манипулировать, или 3D использовать. Не знаю степени необходимости, нужны ли эти лишние заморочки.
|
|
| |
YellowAfterlife | Дата: Понедельник, 05 Октября 2015, 19:35 | Сообщение # 8 |
Сейчас нет на сайте
| Цитата uriage ( ) Реально ли так "издеваться" над спрайтом ? Можно вычислить координаты углов трапеции (в зависимости от поворота), и составлять ее с помощью draw_background_part_ext (по вертикальной полосе за раз). Если карта всего одна, то можно посреди рисования включать\выключать 3d проекцию (то есть буквально включить 3d режим, установить камеру, повернуть и нарисовать карту, и выключить 3d режим).
Цитата maksim1221232 ( ) Сделай спрайт карты с двух сторон(кадр 0 - Одна сторона, кадр 1 - Вторая сторона) Не хотел бы обидеть, но ты смотрел приведенную страницу, или читал хотя бы сообщение до конца перед тем, как отвечать? Целевой эффект в том, что по мере поворота должен быть эффект перспективной трансформации. В предложенном способе нет никаких следов этого.
|
|
| |
OpenGOO | Дата: Вторник, 06 Октября 2015, 12:38 | Сообщение # 9 |
почти ветеран
Сейчас нет на сайте
| Вот такое в 3D можно сотворить
В Draw Event Код var xx = x; var yy = window_get_height() - y; d3d_set_culling(true); d3d_transform_set_rotation_y(angle); d3d_transform_add_translation(xx, yy, 0); draw_sprite(sprite, 0, 0, 0); d3d_transform_set_rotation_y(angle + 180); d3d_transform_add_translation(xx, yy, 0); draw_sprite(sprite, 1, 0, 0); d3d_transform_set_identity();
P.S. c 3D в GMS не работаю
Мои проекты: - Свободный и открытый клон World Of Goo - TrueEngine2D (2D игровой фреймворк основанный на FreeBASIC)
[GameMaker: Studio v1.4.9999]
|
|
| |