2016-04-09 8 views
1

Я создал этот код в сценарии удаления, во-первых:Как я могу удалить свой ландшафт?

var terrain = GetComponent(Rigidbody2D); 

function Update() 
{ 
    if (terrain.position.x <= Camera.main.transform.position.x - 5) 
    { 
     Destroy(this.GameObject); 
    } 
} 

Вот снимок экрана:

enter image description here

И мой сборный материал:

enter image description here

Что я хочу, когда камера находится перед сборником, я хочу это чтобы удалить себя. Однако, это ошибка, я получаю:

NullReferenceException: Object reference not set to an instance of an object 
UnityEngine.Component.GetComponent (System.Type type) 
Deletion..ctor() (at Assets/Scripts/Deletion.js:3) 
UnityEngine.Object:Instantiate(Object, Vector3, Quaternion) 
Repeating Terrain:SpawnTerrain(Object) (at Assets/Scripts/Repeating Terrain.js:60) 
Repeating Terrain:Update() (at Assets/Scripts/Repeating Terrain.js:52) 

ответ

0

Попробуйте с помощью таймера и использовать консоль/отладки, чтобы убедиться, что у вас есть правильный объект

Destroy (this.GameObject, 5); 

или GameObject.Destroy (геймобжекты)

+0

Это не сработало. Я сделал это, но он все равно не удалит. Помните, что ошибка означает, что Unity даже не знает, что такое ландшафт, что странно, потому что ему присваивается компонент Get – Number1son100

+0

Интересно. Попробуйте установить рельеф = GetComponent (Rigidbody2D); в void Start {} и создайте переменную var public public Rigidbody2D; – Mikes3ds

1

Итак, оказывается, мне просто нужно было заменить this.GameObject на this.gameObject. Я его капитализировал, вот и все.

+0

Хороший улов! Не видел, что использование капитала обычно означает, что вы имеете в виду класс. – Mikes3ds

+0

Я ценю вашу помощь, поэтому я дам вам ответ. – Number1son100

+0

Нет проблем. Удачи! – Mikes3ds

 Смежные вопросы

  • Нет связанных вопросов^_^