Четверг, 16 Августа 2018, 04:09

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Анимация вращения карт
Анимация вращения карт
uriageДата: Воскресенье, 04 Октября 2015, 23:47 | Сообщение # 1
был не раз
Сейчас нет на сайте
Всем привет.

Сделал игру - примитивную : раскладываются карты на экране в сетке 5*5. Надо найти 3 одинаковые - нажимая на них.
Кто-нибудь занимался вопросом анимации вращения карт?
Нигде не могу найти информации по этой теме. Может быть толкнете - где, куда смотреть?

Заранее спасибо.
maksim1221232Дата: Понедельник, 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

Как следствие спрайт надо заключить в некую плоскость, и у этой плоскости уменьшать ширину, увеличивая высоту левой стороны и уменьшая высоту правой стороны.

Реально ли так "издеваться" над спрайтом ?
maksim1221232Дата: Понедельник, 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.1772]
Форум игроделов » Конструкторы игр и лёгкие в освоении системы разработки игр » Game Maker Studio » Анимация вращения карт
  • Страница 1 из 1
  • 1
Поиск:

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