Кол-во объектов в триггере

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

Кол-во объектов в триггере

Сообщение killerok5d 11 мар 2016, 19:19

Как узнать, сколько объектов с определенным тэгом находится в триггере?
killerok5d
UNец
 
Сообщения: 20
Зарегистрирован: 03 июн 2015, 14:38

Re: Кол-во объектов в триггере

Сообщение Mumboo 12 мар 2016, 13:11

Синтаксис:
Используется csharp
int count = 0;

void OnTriggerEnter(Collider obj)
{
     if(obj.tag == "enemy")
          count++;
}

void OnTriggerExit(Collider obj)
{
     if(obj.tag == "enemy")
          count--;
}
Mumboo
UNITрон
 
Сообщения: 166
Зарегистрирован: 22 май 2013, 22:12

Re: Кол-во объектов в триггере

Сообщение waruiyume 12 мар 2016, 16:07

К сожалению не всё так просто, при некоторых обстоятельствах вход(не уверен, вроде, если объект находится в триггере изначально), либо выход(при уничтожении объекта), могут не вызваться. Можно в OnTriggerStay добавлять значения счётчика, и запускать корутину, которая будет ждать WaitForFixedUpdate, после чего обнулять счётчик, предварительно скопировав его значение, в переменную, которая будет использоваться извне.
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Кол-во объектов в триггере

Сообщение GameDevelop 12 мар 2016, 17:01

Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour
{
    public string tagName;

    public int countObjs;

    private void OnTriggerEnter(Collider coll)
    {
        if (coll.gameObject.tag == tagName)
            countObjs++;
    }

    private void OnTriggerExit(Collider coll)
    {
        if (coll.gameObject.tag == tagName)
            countObjs--;
    }
}
skype : game.develop
Аватара пользователя
GameDevelop
UNIт
 
Сообщения: 81
Зарегистрирован: 28 дек 2011, 14:55
Откуда: Одеса
Skype: game.develop

Re: Кол-во объектов в триггере

Сообщение killerok5d 13 мар 2016, 17:27

GameDevelop писал(а):
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class Example : MonoBehaviour
{
    public string tagName;

    public int countObjs;

    private void OnTriggerEnter(Collider coll)
    {
        if (coll.gameObject.tag == tagName)
            countObjs++;
    }

    private void OnTriggerExit(Collider coll)
    {
        if (coll.gameObject.tag == tagName)
            countObjs--;
    }
}

В таком случае, есть проблема, если удалить объект, то выход из триггера не засчитывается, и переменная показывает не точное значение
killerok5d
UNец
 
Сообщения: 20
Зарегистрирован: 03 июн 2015, 14:38


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


cron