Страница 1 из 1

Проблема с Префабами

СообщениеДобавлено: 17 фев 2019, 15:37
LamLan
Здравствуйте. Для создания AI я использую префабы. Берется конкретная точка в пространстве где создаются при помощи корутины AI. Они доходят до определенной области и уничтожаются, но появилась проблема. Если данных AI много, то достаточно одному дойди до точки уничтожения, как все они уничтожаются, что логично. Ибо скрипт тот же. Через что можно реализовать уничтожение, дабы AI уничтожались по отдельности. Заранее спасибо.

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

СообщениеДобавлено: 17 фев 2019, 15:41
Jarico
LamLan писал(а): Заранее спасибо.


Скрипт где? алё!

https://vk.cc/93Juhj

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

СообщениеДобавлено: 17 фев 2019, 15:48
LamLan
Jarico писал(а):
LamLan писал(а): Заранее спасибо.


Скрипт где? алё!

https://vk.cc/93Juhj




Извините, вот

[syntax=]
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class SimpleEngine : MonoBehaviour
{
NavMeshAgent main;
Vector3 Pos2;
void Start()
{
main = GetComponent<NavMeshAgent>();
Pos2 = new Vector3(-43, 5, 0);
}
void Update()
{
main.SetDestination(Pos2);
if (GameObject.Find("Planedelete").GetComponent<TriggerDelete>().newDestroy == true)
{
Destroy(gameObject); // Само удаление!!!
}

if (GameObject.Find("PlaneLight").GetComponent<TriggerLight>().Activate == true)
{

if (GameObject.Find("TrafficLight").GetComponent<TrafficLightController>().Logistic == true)
{
main.speed = 80;

}
if (GameObject.Find("TrafficLight").GetComponent<TrafficLightController>().Logistic == false)
{
main.speed = 0;

}
}
if (GameObject.Find("PlaneLight").GetComponent<TriggerLight>().Activate == false)
{
main.speed = 80;
main.acceleration = 8;
}
}
}
[/syntax]

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

СообщениеДобавлено: 17 фев 2019, 16:34
Jarico
Синтаксис:
Используется csharp
if (GameObject.Find("Planedelete").GetComponent<TriggerDelete>().newDestroy == true)
{
Destroy(gameObject); // Само удаление!!!
}
 


Чта это ващи такое? Что твой скрипт вообще делает и что ты хочешь сделать?

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

СообщениеДобавлено: 17 фев 2019, 16:42
LamLan
Jarico писал(а):
Синтаксис:
Используется csharp
if (GameObject.Find("Planedelete").GetComponent<TriggerDelete>().newDestroy == true)
{
Destroy(gameObject); // Само удаление!!!
}
 


Чта это ващи такое? Что твой скрипт вообще делает и что ты хочешь сделать?





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

    [SerializeField] internal bool newDestroy;
   
        void OnTriggerEnter(Collider other)

    {
        newDestroy = true;

       
    }

    void OnTriggerExit(Collider other)

    {
        newDestroy = false;

       
    }



    void Start()
    {
       
    }

   
    void Update()
    {
       
    }
}
 


Когда мои префабы проезжают конкретную область, то они уничтожаются.

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

СообщениеДобавлено: 17 фев 2019, 17:00
Friend123
Что может быть примитивнее - попал в OnCollisionEnter или в OnTriggerEnter запустил метод Destroy(gameobject)?!

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

СообщениеДобавлено: 17 фев 2019, 17:09
LamLan
Friend123 писал(а):Что может быть примитивнее - попал в OnCollisionEnter или в OnTriggerEnter запустил метод Destroy(gameobject)?!

Не совсем понял, сарказм шоль? Я использую метод удаления, но он удаляет все одинаковые префабы которые есть на сцене. Мне же нужно, чтобы удалялся 1.

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

СообщениеДобавлено: 17 фев 2019, 17:33
Friend123
Ну, оно?
Синтаксис:
Используется csharp
void OnTriggerEnter(Collider obj) {
    Destroy(obj.gameObject);
}
 

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

СообщениеДобавлено: 17 фев 2019, 18:09
Jarico
Код можно упростить в 10 раз

в скрипте который на триггере висит сделай проверку на наличие компонента NavMeshAgent и делай Destroy... При контакте триггер вызывает метод OnTriggerEnter и даёт в качестве аргумента ссылочку на объект который вошёл в его область