Проблема с триггерами

Программирование на Юнити.

Проблема с триггерами

Сообщение Bearer 15 дек 2011, 16:12

Создал не сцене несколько триггеров, каждый из которых должен вызвать свои события. Проблема в том, что при пересечении одного триггера, почему-то выполняется события другого триггера.

Синтаксис:
Используется csharp
void Start () {
                BoxCollider YouDied = (BoxCollider)Floor.GetComponent("BoxCollider");
        }

void OnTriggerEnter (Collider YouDied) {
                Player.transform.position = startPosition;
        }
 


Выше описанный триггер YouDied срабатывает даже если пересекается совсем другой триггер из другого файла. Помогите пожалуйста, может я триггерами вообще неправильно пользуюсь :(
Bearer
UNец
 
Сообщения: 14
Зарегистрирован: 17 ноя 2011, 16:22

Re: Проблема с триггерами

Сообщение Левш@ 15 дек 2011, 18:35

Синтаксис:
Используется csharp
void Start () {
                BoxCollider youDied = (BoxCollider)Floor.GetComponent("BoxCollider");
}

void OnTriggerEnter (Collider testColider) {
        if (testColider ==  youDied)  
               Player.transform.position = startPosition;
 }
_X.cor.R (Prologue)
Аватара пользователя
Левш@
Адепт
 
Сообщения: 4073
Зарегистрирован: 14 окт 2009, 16:34
Откуда: IBERIA
Skype: bars_levsha
  • Сайт

Re: Проблема с триггерами

Сообщение seaman 15 дек 2011, 18:44

Работать не будет. Как минимум объявление переменной вынести из Start

Синтаксис:
Используется csharp
BoxCollider youDied;

void Start () {
                youDied = (BoxCollider)Floor.GetComponent("BoxCollider");
}

void OnTriggerEnter (Collider testColider) {
        if ((BoxCollider)testColider ==  youDied)  
               Player.transform.position = startPosition;
 }
seaman
Адепт
 
Сообщения: 8352
Зарегистрирован: 24 янв 2011, 12:32
Откуда: Самара

Re: Проблема с триггерами

Сообщение Bearer 15 дек 2011, 20:46

seaman, приведение не работает error CS0103: The name `testCollider' does not exist in the current context. Пробовал без него, тогда условие не удовлетворяется. testCollider объявил как Collider
Bearer
UNец
 
Сообщения: 14
Зарегистрирован: 17 ноя 2011, 16:22

Re: Проблема с триггерами

Сообщение waruiyume 15 дек 2011, 21:25

Мне кажется, сравнивать ссылки на коллайдеры слишком геморройно, легче использовать имена ГО.
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class TriggerTest : MonoBehaviour
{
    public string killTrigger="kill";
    public string teleporterTrigger="teleporter";
       
        // Update is called once per frame
        void OnTriggerEnter (Collider other)
    {
            if(other.name==killTrigger)
            Debug.Log("Become an hero");
            else if(other.name==teleporterTrigger)
            {
                transform.position += other.transform.forward*50f;
            Debug.Log("Teleportated");
            }
        }
}

 
Аватара пользователя
waruiyume
Адепт
 
Сообщения: 6143
Зарегистрирован: 30 окт 2010, 05:03
Откуда: Ростов на Дону

Re: Проблема с триггерами

Сообщение burlak 16 дек 2011, 05:52

Имхо, если надо сделать красиво, лучше сделать что то типа Visitor:

Делаем компоненту которую вешаем на триггер:

Синтаксис:
Используется csharp
public string messageName;//в принципе можно воспользоваться именем объекта прибавив к нему "On" и убрав хреновые символы
protected void OnTriggerEnter(Collider coll){
  coll.SendMessageUpwards(messageName, this, SendMessageOptions.DontRequireReceiver);
}
 


Ну а на посетителе делаем нужное количество методов реагирования.
С уважением, Дмитрий Бурлаков.
skype: dmitry.burlakov
email: _dmitry.burlakov@gmail.com
Аватара пользователя
burlak
UNITрон
 
Сообщения: 326
Зарегистрирован: 28 янв 2010, 10:21
Откуда: Санкт-Петербург

Re: Проблема с триггерами

Сообщение Bearer 17 дек 2011, 14:18

Всем спасибо, разобрался)
Bearer
UNец
 
Сообщения: 14
Зарегистрирован: 17 ноя 2011, 16:22


Вернуться в Скрипты

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

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