Вторник, 05 Ноября 2024, 15:27

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Анимация перемещиня 4 dir.
RikushiДата: Среда, 02 Ноября 2011, 19:22 | Сообщение # 1
почетный гость
Сейчас нет на сайте
Здравствуйте.
Суть проблемы состоит в следующем.

Имеется персонаж, который двигается по плоскости в 4х направлениях(вверх, вниз, влево, вправо) аля TDS.
Behavior -> 8 dirrections;
Dirrections -> 4 dirrections;

Для этого персонажа имеется анимация движения во всех 4х направлениях.

Для воспроизведения анимации при движении используется следующий алгоритм:

http://pixs.ru/showimage/Tochechniy_8676720_3262780.jpg
//Что-то спойлер не фурычит.

При нажатии одной из заданных для перемещения клавиш(вверх, вниз и т.д.), программа работает.
Однако, при нажатии нескольких разных клавиш управления (вверх и влево, вниз и вправо и т.д.) анимация работает не корректно. Воспроизведение анимации останавливается на 0 фрейме и дальше персонаж движется без анимации.

Вопрос: возможно ли как-то использовать функцию isMoving для корректного отображения анимации при передвижении?
Т.е. как можно узнать направление движения персонажа без указания на используемые клавиши?
Имеется ли проверка на подобии:
Player -> isMoving (UP)
Player -> isMoving (DOWN)
И уже через этот ивент задавать значение анимации?
Player -> isMoving (UP) \\// PlayerSprite -> SetAnimation (WUP)

P.S. Сравнение X,Y параметров текущих и последующих ч-з тик таймера и определение направления движения таким методом, считаю громоздким и не оправдано нагружающим систему. Есть ли более элегантное решение?

UPD:

Есть ли возможность использовать сразу несколько кнопок управления, для выполнения одного и того же действия?
Т.е. при нажатии arrow up или w, персонаж бы перемещался вверх. И при этом не использовать два различных, невидимых спрайта(базиса персонажа)?


Сообщение отредактировал Rikushi - Среда, 02 Ноября 2011, 19:40
boymoveДата: Среда, 02 Ноября 2011, 19:45 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
движение в 4 -х направлениях


Моя первая поделка
Моя вторая поделка
RikushiДата: Среда, 02 Ноября 2011, 20:52 | Сообщение # 3
почетный гость
Сейчас нет на сайте
Пример отличный, благодарю. Вот только воспроизвести у меня его не получилось.
Все время воспроизводиться angle(0), в какую бы сторону персонаж не двигался.
Т.е. он и стоит и движется только вправо(анимация).

http://pixs.ru/showimage/Tochechniy_7802640_3263598.jpg

Что я мог не учесть? И за что отвечает галочка Ping-pong в анимации?

UPD:

Все разобрался. В Rotations стояло значение none.

Большое спасибо за помощь! Отблагодарить могу только + в карму.


Сообщение отредактировал Rikushi - Среда, 02 Ноября 2011, 21:00
allxumukДата: Четверг, 03 Ноября 2011, 04:45 | Сообщение # 4
старожил
Сейчас нет на сайте
Quote (Rikushi)
И за что отвечает галочка Ping-pong в анимации?

Анимация будет воспроизводиться с первого кадра до последнего, а потом от последнего до первого.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
RikushiДата: Пятница, 04 Ноября 2011, 13:12 | Сообщение # 5
почетный гость
Сейчас нет на сайте
Доброго времени суток. И вновь мне потребовалась помощь гуру. Надеюсь гуру мне в ней не откажут.

Суть проблемы:

Имеет некий абстрактный Item1 и Item2. При контакте первого со вторым, запускается таймер, визуально отображаемый как прогресс бар. После того, как прогресс бар заполняется, Item1 и Item2 уничтожаются. На их месте появляется Item3.
Каждого итема может быть различное, не определенное количество, превышающее или равное единице.

Код программы:

Вариант 1
итем2 бросили на итем1 -> прогрес бар(появился, начал отчет)
прогресс бар до тикал -> создать итем3(х,у равный итем1); итем1(уничтожить); итем2(уничтожить); прогресс бар(уничтожить)

Результат: удаляются все итемы 1 и 2, даже те, для которых не появлялся прогресс бар.

Вариант 2
итем2 бросили на итем1 -> прогрес бар(появился, начал отчет); итем1 - приватная переменная set to 0(изначально при создании 1); итем2 - приватная переменная set to 0;
прогресс бар до тикал -> создать итем3(х,у равный итем1);
+ итем1 приватная переменная = 0 -> итем1(уничтожить)
...

Результат: уничтожаются только те итемы, для которых появлялся прогресс бар. Т.е. те которые и должны удалятся. Проблема в том, что больше 1го действия совершить нельзя.

Как реализовать уничтожение-появление для каждого отдельного, независимого случая?

Исходник
http://zalil.ru/31992410
allxumukДата: Пятница, 04 Ноября 2011, 17:17 | Сообщение # 6
старожил
Сейчас нет на сайте
1. Rikushi, Под новые вопросы лучше создавать новые темы.
2. *.cap-вполне достаточно, не нужно вместе с ним прикладывать ресурсы, которые и так в нём хранятся.
3. Лови. Переменной вместо 0, присваивай значение UID прогрессбара, который был создан при наложении item2 на item1. Так когда прогрессбар достигнет кондиции уничтожатся только связанные именно с ним объекты.


Любой дурак может написать программу, которую поймёт компилятор.
Хорошие программисты пишут программы, которые смогут понять другие программисты.
MarkoffkaДата: Пятница, 30 Декабря 2011, 21:50 | Сообщение # 7
Pixel Logic
Сейчас нет на сайте
может бар итем1 и итем2 в семью (family) если уничтожать то сразу всю семью но перед етим итем3 ставится где был итем1

Добавлено (30.12.2011, 21:50)
---------------------------------------------
для обьеденении действии я создаю кн-up и кн-left одну из них перемещаю к одной из них. получается что они вместе.если полезно то можно и плюсик.

  • Страница 1 из 1
  • 1
Поиск:

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