2016-03-20 3 views
1

У меня есть проблема с оным динамически tag к gameObejcts, когда я Instantiateenemy добавить противник тег с помощью этого:Добавить тег к нескольким пунктам динамически единство

GameObject temp = (GameObject)Instantiate(enemy, spwanPosition, spwanRotation); 
temp.gameObject.tag = "Enemy"; 

Я прочитал это из: Is it possible create a tag programmatically

но когда я пытаюсь уничтожить этот объект конкретными explosion Нет объекта с Enemy тег:

void OnTriggerEnter(Collider other) 
{ 
    if (other.tag == "Boundary") 
    { 
     return; 
    } 
    if (other.tag == "Enemy") 
    { 
     Debug.Log("enemy"); # Never printed in console 
     Instantiate(enemyExplosion, other.transform.position, other.transform.rotation); 
    } 
    Instantiate(explosion, this.transform.position, this.transform.rotation); 
    Destroy(other.gameObject); 
    Destroy(this.gameObject); 

Как добавить ярлык динамически в gameObject, который Instantiate несколько раз?

Редактировать

Это изображение из конкретизированных вражеского объекта в игре замолчала, это так проводная, он имеет Enemy tag, но почему это не работает?

enter image description here

Проблема заключается в том, когда в время выполнения Enemy тега присваивается объектам, но когда я проверяю if(other.tag == "Enemy") это dosen't работы!

+0

Я смущен. Вы говорите, что у объекта Instantiated нет тега, но тогда вы говорите, что у него есть тег ...? –

+0

Тег говорит, что враг. Имя говорит «Враг» (Clone). Слой говорит по умолчанию. Что неправильно в соответствии с вашими ожиданиями? – Everts

+0

@fafase, я 'Instantiate' alot из них, Он называет их Клоном сам, я не знаю waht id Layer – Arman

ответ

0

Ссылка, которую вы размещаете, - это динамическое создание тегов, вам это не нужно, и я не понимаю, зачем кому-то это нужно.

Предполагаю, что у вас есть тег Enemy в менеджере тегов?

Вы создаете резерв для врагов, что означает, что вам не нужно enemy.tag = "Enemy". Просто установите метку предварянного врага врагу в инспекторе.

Это создаст новые враги с теми же значениями, что и сборный.

Что касается триггера, который не работает, я не уверен, убедитесь, что вы выполнили все спецификации для врага, вызывающего OnTriggerEnter().

Взятые из http://answers.unity3d.com/questions/753481/ontriggerenter-not-working-tried-everything-c.html

OnTriggerEnter, по крайней мере, один из них должен иметь свойство спусков проверены и по крайней мере один из них должен иметь твердое тело. Если ни один из ваших объектов не является триггером, вы можете вместо этого использовать OnCollisionEnter.

Как только все установлено, вы должны проверить слои (а не теги) на своих объектах. Чтобы отредактировать, какие слои сталкиваются друг с другом, вы можете посмотреть Edit -> Project Settings -> Physics.

+0

Посмотрите на отредактированный вопрос – Arman

0

Я прочитал это из: можно создать тег программно

Это НЕ можно создать метку во время выполнения.Вы можете изменить тег из GameObject к существующей один, но вы НЕ создать новый один.

Так перед тем вы назначить тег с именем Enemy или Boundary, убедитесь, что вы уже создали такой тег в Editor первый. Это также с учетом регистра.

У меня есть проблема с дополнительным динамически помечать к gameObejcts, когда я Инстанцировать враг добавить противник тег с помощью этого:

Instantiate(enemy, spwanPosition, spwanRotation); 
enemy.tag = "Enemy"; 

Как я могу добавить тег динамически в геймобжекты, что Instantiate мультипликатора раз?

Это не так. То, что вы делаете сейчас изменения тег в оригинальный GameObject НЕ конкретизированной геймобжекты. Для измененийтега из конкретизированных GameObject, магазина ссылки на конкретизированных GameObject, а затем изменить в теге. Ниже приведен код, который вы ищете.

GameObject tempGOB= (GameObject)Instantiate(enemy, spwanPosition, spwanRotation); 
tempGOB.tag = "Enemy"; //Change the tag of the Instantiated GameObject instead of the enemy(original object) 
+0

Это тоже не сработало! – Arman

+0

Он должен работать. Выполните активацию игрового объекта, выберите GameObject в своей сцене, а затем разместите снимок экрана на экране. – Programmer

+0

Изображение добавлено, это так странно! – Arman

-1

Я подозреваю, что ваша проблема не в теге, а в столкновении. У вашего вражеского объекта есть коллайдер? Прошел ли простой тест на столкновение?

Edit (забудьте об этом):

На самом деле ваша проблема может быть, что вы не должны использовать other.tag но other.gameObject.tag.

+0

Я бы подумал, что 'other.tag' будет таким же, как' other.gameObject.tag'. Для игрового объекта есть только тег, а не коллайдеры. –

+0

Да, я посмотрел на него, и это то же самое. –

+0

'Other.gameObject.tag' тоже не работает! и у врага есть «Collison Mesh» – Arman

Смежные вопросы