Коллайдер доступа Unity как публичная переменная на разных игровых объектах - PullRequest
0 голосов
/ 17 ноября 2018

Я создаю экземпляры префаба (это два прямоугольника с промежутком в середине), и если спрайт игрока сталкивается с коллайдером в промежутке, счет увеличится.

У меня естьboxCollider2D для готового объекта, и я хочу, чтобы этот коллайдер был общедоступной переменной на отдельном спрайте, чтобы я мог получить к нему доступ в своем скрипте на спрайте.

Так что в настоящее время col, это коллайдер, с которым взаимодействует спрайткоторый:

барьер (клон) (UnityEngine.BoxCollider2D))

, и мой коллайдерБокс:

барьер (UnityEngine.BoxCollider2D)

Так чтоЕдинственное отличие - это один из префаба, а один - из объекта, созданного с использованием префаба.

void OnTriggerEnter2D(Collider2D col){

    if (col.CompareTag ("barrier") && col != colliderBox) {
        Debug.Log (col);
        Debug.Log (colliderBox);
        SceneManager.LoadScene (mainMenu);
    }


}

1 Ответ

0 голосов
/ 17 ноября 2018

Если я получу его, вы хотите, чтобы ваш коллайдер был общедоступной переменной, попробуйте что-то вроде:

public class PrefabObject: MonoBehaviour {

        public BoxCollider2D boxCollider;

        private void Start()
        {
            this.boxCollider = this.GetComponent<BoxCollider2D>();
        }
    }

    public class OtherObject: MonoBehaviour {

                public PrefabObject prefabObject;
                private BoxCollider2D boxCollider;
                private void Start()
                {
                    this.boxCollider = prefabObject.boxCollider;
                    //or also this.boxCollider = prefabObject.GetComponent<BoxCollider2D>(); 
                }
            }

Если к GameObject не подключен скрипт PrefabObject, имеющий boxCollider2D и имеющий толькоПри подключенном компоненте коллайдера OtherObject будет выглядеть так:

public class OtherObject: MonoBehaviour {

                public GameObject prefabObject; //Here is the change!
                private BoxCollider2D boxCollider;
                private void Start()
                {
                    this.boxCollider = prefabObject.GetComponent<BoxCollider2D>();
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...