Воскресенье, 23 Сентября 2018, 12:24

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Модератор форума: beril  
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как исправить систему проверки на касание к земле?
Как исправить систему проверки на касание к земле?
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 он у тебя уже будет в актуальном состоянии


Zeal — Инди PvP ARPG: https://gcup.ru/forum/9-98964-1

Сообщение отредактировал drcrack - Четверг, 22 Февраля 2018, 18:58
ArtemSДата: Четверг, 22 Февраля 2018, 18:58 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Цитата drcrack ()
OnTriggerStay2D


drcrack, предполагаю, что он будет выходить из него при смене платформы
drcrackДата: Четверг, 22 Февраля 2018, 19:01 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
Я думаю проблема в другом — в том что OnTriggerExit2D может вызываться уже после всех других триггеров и перезаписывать поставленный флаг
Мое решение это фиксит
Если дело все-таки в стыках платформ, надо думать дальше


Zeal — Инди PvP ARPG: https://gcup.ru/forum/9-98964-1

Сообщение отредактировал drcrack - Четверг, 22 Февраля 2018, 19:01
Storm54Дата: Пятница, 23 Февраля 2018, 14:07 | Сообщение # 6
постоянный участник
Сейчас нет на сайте
Можно сделать onGround числом. В OnTriggerEnter2D производить инкремент, а в OnTriggerExit2D производить декремент. А уже проверять, на земле ли игрок по условие onGround > 0
Тогда переход между платформами будет нормально отрабатывать.


Более 10 лет опыта разработки на разных языках высокого уровня.
Отличные знания .NET, Unity.
Разбираюсь в протоколах TCP, UDP.
Наличие выпущенных коммерческих проектов.
Занимаюсь разработкой WebGL проекта (с применением технологии WebSocket)
Пишите в Л.С.


Сообщение отредактировал Storm54 - Пятница, 23 Февраля 2018, 14:08
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » Как исправить систему проверки на касание к земле?
  • Страница 1 из 1
  • 1
Поиск:

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