Как исправить систему проверки на касание к земле?
|
|
Goganoid | Дата: Вторник, 20 Февраля 2018, 10:27 | Сообщение # 1 |
был не раз
Сейчас нет на сайте
| Делаю 2д Платформер. Сделал такую систему проверки на прикосновение к земле:
Код public class GroundChecker : MonoBehaviour {
private Character player; private void Start() { player = GetComponentInParent<Character>(); } private void OnTriggerEnter2D(Collider2D collision) { if ( collision.gameObject.layer==8)//8 слой-слой с объектами по которым можно ходить { player.onGround = true; } } private void OnTriggerStay2D(Collider2D collision) { if (collision.gameObject.layer == 8) { player.onGround = true; } } //Проблемный участок// private void OnTriggerExit2D(Collider2D collision) { if (collision.gameObject.layer==8) { player.onGround = false; } }
} Земля у меня состоит из нескольких блоков. Когда персонаж переходит с одного блока на другой на несколько мгновений играет анимация прыжка. Как изменить проверку на выход из "земли"?
|
|
| |
ArtemS | Дата: Четверг, 22 Февраля 2018, 18:09 | Сообщение # 2 |
почетный гость
Сейчас нет на сайте
| Пробовал объединят платформы через V или делать один общий коллайдер ?
хуяк, хуяк и в продакшн
|
|
| |
drcrack | Дата: Четверг, 22 Февраля 2018, 18:56 | Сообщение # 3 |
старожил
Сейчас нет на сайте
| Код void FixedUpdate() { player.onGround = false; }
void OnTriggerStay2D(Collider2D collision){ if (collision.gameObject.layer == 8) { player.onGround = true; } }
Я бы попробовал вот так, а другие колбеки вообще убрал бы в каждом FixedUpdate флаг сбрасывается, потом идут колбеки от физики в том числе OnTriggerStay2D, и если хотя бы один из них будет, флаг ставится обратно, и к моменту Update он у тебя уже будет в актуальном состоянии
Сообщение отредактировал drcrack - Четверг, 22 Февраля 2018, 18:58 |
|
| |
ArtemS | Дата: Четверг, 22 Февраля 2018, 18:58 | Сообщение # 4 |
почетный гость
Сейчас нет на сайте
| Цитата drcrack ( ) OnTriggerStay2D
drcrack, предполагаю, что он будет выходить из него при смене платформы
хуяк, хуяк и в продакшн
|
|
| |
drcrack | Дата: Четверг, 22 Февраля 2018, 19:01 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Я думаю проблема в другом — в том что OnTriggerExit2D может вызываться уже после всех других триггеров и перезаписывать поставленный флаг Мое решение это фиксит Если дело все-таки в стыках платформ, надо думать дальше
Сообщение отредактировал drcrack - Четверг, 22 Февраля 2018, 19:01 |
|
| |
Storm54 | Дата: Пятница, 23 Февраля 2018, 14:07 | Сообщение # 6 |
постоянный участник
Сейчас нет на сайте
| Можно сделать onGround числом. В OnTriggerEnter2D производить инкремент, а в OnTriggerExit2D производить декремент. А уже проверять, на земле ли игрок по условие onGround > 0 Тогда переход между платформами будет нормально отрабатывать.
Сообщение отредактировал Storm54 - Пятница, 23 Февраля 2018, 14:08 |
|
| |