Запуск коллайдера, только если сенсорная фаза закончилась - PullRequest
0 голосов
/ 06 сентября 2018

Кто-нибудь, пожалуйста, помогите, я новичок в Unity и в настоящее время создаю мобильную игру по сортировке мусора, где игроки должны перетаскивать падающий мусор в соответствующий мусорный ящик.

В игре "4 мусорных ведра", и у каждого есть свой собственный многоугольный коллайдер, который установлен в триггер.В настоящее время триггеры уничтожают «объекты-мусор», которые перетаскиваются на него, как только коллайдеры мусорной корзины и мусора сталкиваются с их краями, я использую «OnTriggerEnter2D» для выполнения функции уничтожения.

Однако я хотел, чтобы триггеры уничтожали игровые объекты мусора "только если игрок перестал касаться мусора и бросил его на место триггера"

1 Ответ

0 голосов
/ 06 сентября 2018

Используйте OnTriggerEnter(Collider) и OnTriggerExit(Collider), чтобы изменить состояние вашего мусора. Таким образом, bool должно быть достаточно (в мусорном ведре / не в мусорном ведре).

Итак:

Ваш скрипт для мусора:

bool inTrash=false;

void OnTriggerEnter(Collider other)
    {
        inTrash=true;
    }

void OnTriggerExit(Collider other)
    {
        inTrash=false;
    }

скрипт вашего сенсорного контроллера:

//your touch management here
case TouchPhase.Ended:
                   if(garbage.inTrash)
                   {
                     garbage.Destroy();
                   }
                    break;

Еще один подход: используйте OnTriggerStay (Collider)

void OnTriggerStay(Collider other)
    {
//OnTriggerStay is called once per physics update for every Collider other that is touching the trigger.
        if (yourTouch.TouchPhase==TouchPhase.Ended)
        {
            DestroyGarbage();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...