2016-09-16 4 views
0

Ich benutze das Kudan Plugin in Unity für den Aufbau einer Android-App. Ich benutze den markerlosen Modus. Wenn ich ein Modell berühre, das in diesem markerlosen Modus erscheint, möchte ich es zerstören. Ich verwende ein Raycast Skript wie unten aufgeführt. Ich habe versucht, das Skript an Kudan Kamera anhängen. Außerdem habe ich ein öffentliches Kamera-Spielobjekt erstellt und die Kudan-Kamera daran übergeben. Jedoch funktionieren beide Optionen nicht.Kudan Unity: Zerstören GameObject auf Touch

Weiß jemand, was ich falsch mache?

public Gamobject model; 

if (Input.touchCount > 0) 
     RaycastHit hit; 

      Ray ray = Camera.main.ScreenPointToRay (Input.GetTouch (0).position); 

     if (Physics.Raycast (ray, out hit)) 
     { 
      if (hit.collider.gameObject.tag == "chair") 
      { 
       Destroy (model); 
      } 
     } 
    } 

Vielen Dank im Voraus!

+0

Versuchen Sie vielleicht, den Strahlabstand auf einen hohen Wert einzustellen, um die Situation zu eliminieren, wenn der Strahl endet, bevor Sie etwas treffen. –

+0

Ein Vorschlag wäre, möglicherweise den Code mit dem Debugger zu durchlaufen, so dass Sie den Fluss sehen können, oder fügen Sie ein 'print (" raycast hit object: "+ hit.gameObject.name);' über Ihre if-Anweisung, um festzustellen, ob Raycast funktioniert ordnungsgemäß. Von dort beginnen Sie, das Problem einzuschränken. Hat der Stuhl einen Collider? – ejsd1989

Antwort

1

Unter der Annahme, dass Ihr tatsächlicher Code korrekt ist, und sagt Gameobject statt Gamobject und Ihr if-Anweisung eine öffnende Klammer hat, etc, könnte es sein, dass:

  • Sie haben Ihr Modell des „Stuhl“ nicht gegeben Etikett. Wenn Ihr Strahl das Modell trifft, das Modell jedoch nicht über das richtige Tag verfügt, wird es ignoriert.
  • Der Ray geht nicht weit genug, um etwas zu treffen (wie in den Kommentaren erwähnt). Sie haben keine Entfernung angegeben, was theoretisch bedeuten sollte, dass es keine maximale Entfernung gibt, aber Sie wissen nie, dass Unity einen seltsamen Fehler oder etwas Ähnliches haben könnte.
  • Ihr Modell hat keinen Collider. Objekte benötigen einen Collider, ansonsten kann die Physik-Engine die "Kollision" zwischen dem Strahl und dem Objekt nicht registrieren.

Aber wirklich, eine einfachere und wahrscheinlich bessere Methode wäre, Raycast überhaupt nicht zu verwenden. Wenn Sie eine Methode in einem Skript machen:

void OnMouseDown 
{ 
    Destroy(gameObject); 
} 

und das Skript zu Ihrem Modell anhängen, dann, wenn der Benutzer klickt auf das Modell (oder Taps auf mobile), vorausgesetzt, es ist ein Collider hat, wird es zerstört werden.

+0

Danke für die Antworten. Wie vorgeschlagen, löste das Einstellen des Strahlabstandes auf einen hohen Wert (verwendete Mathf.Infinity) das Problem. – Aniruddha

+0

@Aniruddha können Sie bitte diese Antwort markieren, als ob Sie Ihr Problem gelöst haben. – MultiColourPixel

Verwandte Themen