Как удалить объект в который попала пуля? - Форум Игроделов
Пт, 17 Май 2024, 07:31 
 
Приветствую Вас Гость Главная | Регистрация | Вход
Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Форум Игроделов » UNITY3D » СКРИПТИНГ » Как удалить объект в который попала пуля?
Как удалить объект в который попала пуля?
rsxxДата: Ср, 03 Апр 2013, 20:12 | Сообщение # 1
Нет аватара
 
Сообщений: 14
Награды: 0
Репутация: 3
Статус: Offline
Подскажите,пожалуйста,есть мишени(из префаба) на сцене,при попадании пули должна удалится только та мишень в которую собственно пуля попала.
Пытался решить в "лоб",и навесил на пулю следующее условие:
Код

void OnCollisionEnter (Collision Mycollision) {
if (Mycollision.transform.tag=="target")
    {
     Destroy(gameObject);
    }
}

и понятное дело,что при попадании,удаляются все мишени
глупо,но не знаю,как мне обратится именно к данному обьекту,где произошла коллизия sad
 
СообщениеПодскажите,пожалуйста,есть мишени(из префаба) на сцене,при попадании пули должна удалится только та мишень в которую собственно пуля попала.
Пытался решить в "лоб",и навесил на пулю следующее условие:
Код

void OnCollisionEnter (Collision Mycollision) {
if (Mycollision.transform.tag=="target")
    {
     Destroy(gameObject);
    }
}

и понятное дело,что при попадании,удаляются все мишени
глупо,но не знаю,как мне обратится именно к данному обьекту,где произошла коллизия sad

Автор - rsxx
Дата добавления - 03 Апр 2013 в 20:12
ЛевшаДата: Ср, 03 Апр 2013, 20:48 | Сообщение # 2
Черный Волк
 
Сообщений: 7257
Награды: 30
Репутация: 3313
Статус: Offline
C твоим скриптом если он висит на пуле будет удаляться пуля а не все мишени...
Че то ты сильно намутил и еще дезинформируешь нас... smile
Чтобы пуля удаляла мишень у которую попала, код будет такого вида:

Код
void  
OnCollisionEnter (Collision Mycollision) {
  if (Mycollision.tag == "target")
      Destroy(Mycollision.gameObject);
  }  


А с мишеней код удаления убери.


X.cor.R (Prologue)
 
СообщениеC твоим скриптом если он висит на пуле будет удаляться пуля а не все мишени...
Че то ты сильно намутил и еще дезинформируешь нас... smile
Чтобы пуля удаляла мишень у которую попала, код будет такого вида:

Код
void  
OnCollisionEnter (Collision Mycollision) {
  if (Mycollision.tag == "target")
      Destroy(Mycollision.gameObject);
  }  


А с мишеней код удаления убери.

Автор - Левша
Дата добавления - 03 Апр 2013 в 20:48
rsxxДата: Ср, 03 Апр 2013, 21:47 | Сообщение # 3
Нет аватара
 
Сообщений: 14
Награды: 0
Репутация: 3
Статус: Offline
Цитата (Левша)
Чтобы пуля удаляла мишень у которую попала, код будет такого вида:

Код
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?)
 
Сообщение
Цитата (Левша)
Чтобы пуля удаляла мишень у которую попала, код будет такого вида:

Код
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?)

Автор - rsxx
Дата добавления - 03 Апр 2013 в 21:47
seamanДата: Чт, 04 Апр 2013, 00:11 | Сообщение # 4
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
А прочитать?
 
СообщениеА прочитать?

Автор - seaman
Дата добавления - 04 Апр 2013 в 00:11
rsxxДата: Чт, 04 Апр 2013, 11:47 | Сообщение # 5
Нет аватара
 
Сообщений: 14
Награды: 0
Репутация: 3
Статус: Offline
разобрался,всем спасибо!

Код
if (collision.gameObject.name == "head")
         {
    Debug.Log("Touched ground");
    Destroy(collision.gameObject);
    }

Добавлено (04.04.2013, 11:47)
---------------------------------------------
воспользуюсь еще раз вашим терпением smile
итак,при попадании в объект с тегом "head" он уничтожается,и именно тот с которым было столкновение
вопрос - а как, уничтожить одновременно с ним и родителя?
например - объект "Box"содержит в себе дочерние объекты,в том числе и "head",сейчас уничтожается "head",а как уничтожить сам "Box"? Учитывая,что этих "Box" у меня много,а мне нужно удалить в котором произошло попадание в "head"

 
Сообщениеразобрался,всем спасибо!

Код
if (collision.gameObject.name == "head")
         {
    Debug.Log("Touched ground");
    Destroy(collision.gameObject);
    }

Добавлено (04.04.2013, 11:47)
---------------------------------------------
воспользуюсь еще раз вашим терпением smile
итак,при попадании в объект с тегом "head" он уничтожается,и именно тот с которым было столкновение
вопрос - а как, уничтожить одновременно с ним и родителя?
например - объект "Box"содержит в себе дочерние объекты,в том числе и "head",сейчас уничтожается "head",а как уничтожить сам "Box"? Учитывая,что этих "Box" у меня много,а мне нужно удалить в котором произошло попадание в "head"


Автор - rsxx
Дата добавления - 04 Апр 2013 в 11:47
seamanДата: Чт, 04 Апр 2013, 15:20 | Сообщение # 6
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Destroy(collision.gameObject.transform.root)
 
СообщениеDestroy(collision.gameObject.transform.root)

Автор - seaman
Дата добавления - 04 Апр 2013 в 15:20
rsxxДата: Чт, 04 Апр 2013, 16:34 | Сообщение # 7
Нет аватара
 
Сообщений: 14
Награды: 0
Репутация: 3
Статус: Offline
Цитата (seaman)
Destroy(collision.gameObject.transform.root)


дело в том,что так не удаляется,пишет ошибку:
Цитата
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 применима к обьектам у которых есть коллайдер.
А если я прицеплю коллайдер,то тогда невозможно работать с обьектами с которыми произошло попадание
ПыСы:
Вот как реализовать это - мишень,состоит из нескольких участков(яблоко,круг,фанера),надо естественно считать очки в зависимости от попадания.
Вот я решил,сделать мишень из нескольких мешей(яблоко,круг,фанера) теперь при попадании в яблоко,круг,фанера - удаляется меш,и это выглядит не очень(фанера с дыркой)...вот и хочу - при попадании в любой меш,выводить сообщение,куда попал и удалять всю мишень,со всеми обьектами внутри...
идиотство какое-то, wacko но по другому не знаю как решить
 
Сообщение
Цитата (seaman)
Destroy(collision.gameObject.transform.root)


дело в том,что так не удаляется,пишет ошибку:
Цитата
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 применима к обьектам у которых есть коллайдер.
А если я прицеплю коллайдер,то тогда невозможно работать с обьектами с которыми произошло попадание
ПыСы:
Вот как реализовать это - мишень,состоит из нескольких участков(яблоко,круг,фанера),надо естественно считать очки в зависимости от попадания.
Вот я решил,сделать мишень из нескольких мешей(яблоко,круг,фанера) теперь при попадании в яблоко,круг,фанера - удаляется меш,и это выглядит не очень(фанера с дыркой)...вот и хочу - при попадании в любой меш,выводить сообщение,куда попал и удалять всю мишень,со всеми обьектами внутри...
идиотство какое-то, wacko но по другому не знаю как решить

Автор - rsxx
Дата добавления - 04 Апр 2013 в 16:34
VolkOrievithДата: Чт, 18 Апр 2013, 18:00 | Сообщение # 8
Нет аватара
 
Сообщений: 222
Награды: 0
Репутация: 53
Статус: Offline
Цитата (seaman)
Destroy(collision.gameObject.transform.root)

Ничего не знаю про transform.root, но удалить родителя можно так:
Код

Destroy(collision.gameObject.transform.parent);
 
Сообщение
Цитата (seaman)
Destroy(collision.gameObject.transform.root)

Ничего не знаю про transform.root, но удалить родителя можно так:
Код

Destroy(collision.gameObject.transform.parent);

Автор - VolkOrievith
Дата добавления - 18 Апр 2013 в 18:00
seamanДата: Чт, 18 Апр 2013, 21:53 | Сообщение # 9
Гуру
 
Сообщений: 1748
Награды: 10
Репутация: 660
Статус: Offline
Ну понятно же что написало вопрошающему - трансформ нельзя удалять. Только Игровой объект. Ну разве это так невыполнимо - из трансформа получить объект? Ну думать же немного надо?
 
СообщениеНу понятно же что написало вопрошающему - трансформ нельзя удалять. Только Игровой объект. Ну разве это так невыполнимо - из трансформа получить объект? Ну думать же немного надо?

Автор - seaman
Дата добавления - 18 Апр 2013 в 21:53
Viktor1233W21Дата: Пт, 18 Июл 2014, 16:15 | Сообщение # 10
 
Сообщений: 1
Награды: 0
Репутация: 0
Статус: Offline
using UnityEngine;
using System.Collections;
public class Kill : MonoBehaviour {
public int Dead = 0;
void OnCollisionEnter(Collision colision){//при пересечении с пулей
Destroy(gameObject);//уничтожить
}
void Update () {
}
}
// Цей код работа прекрасно и удаляются нужный объект


1
 
Сообщениеusing UnityEngine;
using System.Collections;
public class Kill : MonoBehaviour {
public int Dead = 0;
void OnCollisionEnter(Collision colision){//при пересечении с пулей
Destroy(gameObject);//уничтожить
}
void Update () {
}
}
// Цей код работа прекрасно и удаляются нужный объект

Автор - Viktor1233W21
Дата добавления - 18 Июл 2014 в 16:15
Форум Игроделов » UNITY3D » СКРИПТИНГ » Как удалить объект в который попала пуля?
  • Страница 1 из 1
  • 1
Поиск:
Загрузка...

Game Creating CommUnity © 2009 - 2024