Созданный префаб работает не так, как ожидалось, но когда префаб помещен на сцену, все работает, как ожидалось - PullRequest
0 голосов
/ 04 августа 2020

У меня есть сценарий, прикрепленный к префабу, и этот сценарий выглядит следующим образом:

using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class destroyer : MonoBehaviour
{
    
    Circles circles;

    CircleCollider2D collider1;
    Collider2D collider2;


    private void Start()
    {


        circles = FindObjectOfType<Circles>();

    }
 
    private void OnEnable()
    {
        collider1 = gameObject.transform.GetChild(0).GetComponent<CircleCollider2D>();
        collider2 = gameObject.transform.GetChild(1).GetComponent<Collider2D>();
    }

    private void Update()
    {
        if (transform.position.y < 2)
        {
            Destroy(gameObject);
            circles.instantiator();
            
        }
      



    }
    void OnTriggerStay2D(Collider2D other)
    {
      

        if (collider1.bounds.Contains(other.bounds.max) && collider1.bounds.Contains(other.bounds.min))
       {
            
            if (other.bounds.Contains(collider2.bounds.max) && other.bounds.Contains(collider2.bounds.min))
            {
                
                if (transform.position.y > 3)
                {
                    
                    Destroy(other.gameObject);
                    Destroy(gameObject);
                    circles.instantiator();
                }

            }

        }
    }





}

Когда я создаю экземпляр префаба, условие if никогда не выполняется, даже если условие истинно. Но когда я помещаю префаб на сцену и играю в игру, тогда это if условие работает нормально в соответствии с условием. Я не могу понять, в чем проблема.

1 Ответ

0 голосов
/ 05 августа 2020

Вы добавили дочерних элементов сборных элементов по порядку. GameObject с коллайдером 2D-круга должен быть первым, а второй дочерний объект должен иметь 2D-коллайдер.

Попробуйте:

collider1 = GetComponentInChildren<CircleCollider2D>();
collider2 = GetComponentInChildren<Collider2D>();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...