Анимация перемещиня 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 одну из них перемещаю к одной из них. получается что они вместе.если полезно то можно и плюсик.
|
|
| |