Суббота, 16 Ноября 2024, 14:58

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Событие на Jumpx2, jump+horisontal (2D)
AstralangelДата: Вторник, 12 Ноября 2013, 09:48 | Сообщение # 1
STF Games
Сейчас нет на сайте
Еще раз здравствуйте. По ходу разработки возникают вопросы ответы на которые я не могу найти в глобальной сети, поэтому я думаю буду создавать периодически такие топики.

В данный момент столкнулся с проблемой назначения событий.
На данный момент мне нужно, к примеру, задать анимацию персонажа для двойного прыжка (когда он находится в воздухе после первого прыжка) отличную от той которая назначена на прыжок.
+ Тоже самое для "полета" а точнее для зажатия <- -> в воздухе после прыжка.
Если для бега и прыжков все просто:
Код
if(Input.GetButtonDown ("Jump") {
//Тут все что хотим сделать
}

То для этих событий я не могу сообразить как реализовать выше сказанное.
Заранее спасибо.


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
RangerДата: Вторник, 12 Ноября 2013, 09:53 | Сообщение # 2
почти ветеран
Сейчас нет на сайте
На объекте добавь
public bool AmIinAir; // true, false
.................
if(!AmIinAir)
{
// 1st animation
}
else
{
// 2nd animation
}
AmIinAir менять соответственно положения персонажа.




Сообщение отредактировал Ranger - Вторник, 12 Ноября 2013, 09:54
AstralangelДата: Вторник, 12 Ноября 2013, 09:59 | Сообщение # 3
STF Games
Сейчас нет на сайте
Цитата Ranger ()
public bool AmIinAir; // true, false

Добрый день. Спасибо за ответ.
Я так понимаю AmInAir является произвольной переменной типа boolean? То есть это может быть что угодно, не суть. Верно?
Тогда я не совсем понимаю как ее привязать "соответственно положения персонажа". Как должно выглядить условие что персонаж после нажатия на Jump (который имеет не фикисрованную высоту и чем дольше зажимаем, его тем выше он перемещается) делает еще один Jump в воздухе, после чего AminAir получает значение true?


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир

Сообщение отредактировал Astralangel - Вторник, 12 Ноября 2013, 10:00
RangerДата: Вторник, 12 Ноября 2013, 10:05 | Сообщение # 4
почти ветеран
Сейчас нет на сайте
Цитата Astralangel ()
Я так понимаю AmInAir является произвольной переменной типа boolean?


Да, все правильно.

1. (более правильный, более сложный )вариант по высоте нахождения персонажа от пола.
Raycast от персонажа вниз в препятствие. если это препятствие - пол (платформа, машина, поезд) и длина луча больше чем (задать ручками рост персонажа). AmIinAir = true.
Данный метод будет работать также в том случае, если персонаж не прыгнул, а падает.

2. более простой. в момент прыжка = в тру, в момент коллизии с пол (платформа, машина, поезд) - фалс. // но могут быть баги




Сообщение отредактировал Ranger - Вторник, 12 Ноября 2013, 10:05
AstralangelДата: Вторник, 12 Ноября 2013, 10:18 | Сообщение # 5
STF Games
Сейчас нет на сайте
Первый вариант не может подойти, так как я говорю, у нас нет фиксированной высоты первого прыжка. Прыжок не равняется высоте персонажа, он может быть меньше, или больше в 3 раза.
Второй немного неправилен по своей структуре. У нас ведь действие происходит в воздухе в изначально неизвестной нам высоте. То есть событие уже не подойдет в виду его ограниченности, всего 2 события, касается пола и не касается пола.

Цитата Ranger ()
Данный метод будет работать также в том случае, если персонаж не прыгнул, а падает.

А ведь цель задать разные анимации и для падения в том числе.

Добавлено (12.11.2013, 10:18)
---------------------------------------------
Если делать проверку на коллизию и проверять повторный (второй, третий) клик по кнопке jump, думаю такой вариант может подойти. Только вот как проверить повторный клик, на уровне синтаксиса не могу сообразить как это должно выглядеть.


Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир
RangerДата: Вторник, 12 Ноября 2013, 10:29 | Сообщение # 6
почти ветеран
Сейчас нет на сайте
Цитата Astralangel ()
Прыжок не равняется высоте персонажа, он может быть меньше, или больше в 3 раза.

Некогда сейчас готовый скрипт вписывать, поэтому на пальцах.
длина луча до столкновения д.б. > роста персонажа.(рост персонажа это расстояние от transform.position до пола, когда персонаж стоит.)
тогда флаг в тру..

пример
рост персонажа 100.. он подпрыгнул на 1. будет: длина луча > роста персонажа.
рост персонажа 100.. он подпрыгнул на 1000. будет: длина луча > роста персонажа.
рост персонажа 100.. его вбило в пол на 5. будет длина луча < роста персонажа.
остальное в доках ищи.


AstralangelДата: Вторник, 12 Ноября 2013, 10:38 | Сообщение # 7
STF Games
Сейчас нет на сайте
Ranger, отлично, это то что нужно. Но как быть с анимацией на перемещения вправо-влево в полете? По такой же аналогии + смещение по оси x?

Весь мир театр, все люди в нем актеры и каждый не одну играет роль (с) Шекспир

Сообщение отредактировал Astralangel - Вторник, 12 Ноября 2013, 10:38
RangerДата: Вторник, 12 Ноября 2013, 13:41 | Сообщение # 8
почти ветеран
Сейчас нет на сайте
Astralangel,
Я показал пример, дальше строить алгоритмы учись сам (хотя бы по аналогии).
Удачи..


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

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