2016-04-09 12 views
1

setzte ich diesen Code in dem Löschen Skript auf, zunächst einmal:Wie kann ich mein Gelände selbst löschen?

var terrain = GetComponent(Rigidbody2D); 

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

Hier ist ein Bild des Bildschirms:

enter image description here

Und meine Fertig Sachen:

enter image description here

Was ich will, ist für, wenn die Kamera vor dem Prefab ist, will ich es um sich selbst zu löschen. Dies ist jedoch der Fehler erhalte ich:

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) 

Antwort

0

es mit einem Timer Versuchen und Konsole/debug verwenden, um sicherzustellen, dass Sie das richtige Objekt

Destroy (this.GameObject, 5); 

oder GameObject.Destroy (Gameobject) haben

+0

Dies hat nicht funktioniert. Ich habe das gemacht, aber es wird immer noch nicht gelöscht. Denken Sie daran, dass der Fehler bedeutet, dass Unity nicht einmal weiß, welches Gelände ist, was seltsam ist, weil es mit Get Component – Number1son100

+0

Interessant zugewiesen ist. Versuchen Sie, Terrain = GetComponent (Rigidbody2D) zu setzen; im void Start {} und mache eine Variable namens public Rigidbody2D terrain; – Mikes3ds

1

Also, es stellt sich heraus, ich musste nur this.GameObject mit this.gameObject ersetzen. Ich habe es großgeschrieben, das war alles.

+0

Guter Fang! Habe das nicht gesehen, bedeutet die Verwendung von Kapital normalerweise, dass Sie sich auf die Klasse beziehen. – Mikes3ds

+0

Ich schätze Ihre Hilfe, also gebe ich Ihnen die Antwort. – Number1son100

+0

Kein Problem. Viel Glück! – Mikes3ds