Подскажите,пожалуйста,есть мишени(из префаба) на сцене,при попадании пули должна удалится только та мишень в которую собственно пуля попала. Пытался решить в "лоб",и навесил на пулю следующее условие:
C твоим скриптом если он висит на пуле будет удаляться пуля а не все мишени... Че то ты сильно намутил и еще дезинформируешь нас... Чтобы пуля удаляла мишень у которую попала, код будет такого вида:
Чтобы пуля удаляла мишень у которую попала, код будет такого вида:
Код void OnCollisionEnter (Collision Mycollision) { if (Mycollision.tag == "target") Destroy(Mycollision.gameObject); }
не работает! создал новый скрипт,предварительно удалил старый,но пишет ошибку:
Цитата
Assets/_scripts/Testdesкtoy.cs(11,19): error CS1061: Type `UnityEngine.Collision' does not contain a definition for `tag' and no extension method `tag' of type `UnityEngine.Collision' could be found (are you missing a using directive or an assembly reference?)
if (collision.gameObject.name == "head") { Debug.Log("Touched ground"); Destroy(collision.gameObject); }
Добавлено (04.04.2013, 11:47) --------------------------------------------- воспользуюсь еще раз вашим терпением итак,при попадании в объект с тегом "head" он уничтожается,и именно тот с которым было столкновение вопрос - а как, уничтожить одновременно с ним и родителя? например - объект "Box"содержит в себе дочерние объекты,в том числе и "head",сейчас уничтожается "head",а как уничтожить сам "Box"? Учитывая,что этих "Box" у меня много,а мне нужно удалить в котором произошло попадание в "head"
Can't destroy Transform component. If you want to destroy the game object please call 'Destroy' on the game object instead. Destroying the transform component is not allowed.
насколько я понял - потому,что мишень у меня состоит из нескольких мешей(яблоко,круг,фанера)которые имеют меш,меш коллайдер,материал,а вот родительский объект,назовем его "target" не имеет коллайдера,ни меша. Вот и мучаюсь - как удалить его,родительский обьект,ведь насколько я понял - функция OnCollisionEnter применима к обьектам у которых есть коллайдер. А если я прицеплю коллайдер,то тогда невозможно работать с обьектами с которыми произошло попадание ПыСы: Вот как реализовать это - мишень,состоит из нескольких участков(яблоко,круг,фанера),надо естественно считать очки в зависимости от попадания. Вот я решил,сделать мишень из нескольких мешей(яблоко,круг,фанера) теперь при попадании в яблоко,круг,фанера - удаляется меш,и это выглядит не очень(фанера с дыркой)...вот и хочу - при попадании в любой меш,выводить сообщение,куда попал и удалять всю мишень,со всеми обьектами внутри... идиотство какое-то, но по другому не знаю как решить
Ну понятно же что написало вопрошающему - трансформ нельзя удалять. Только Игровой объект. Ну разве это так невыполнимо - из трансформа получить объект? Ну думать же немного надо?
using UnityEngine; using System.Collections; public class Kill : MonoBehaviour { public int Dead = 0; void OnCollisionEnter(Collision colision){//при пересечении с пулей Destroy(gameObject);//уничтожить } void Update () { } } // Цей код работа прекрасно и удаляются нужный объект 1