2017-11-05 4 views
0

Ich habe meinen Player einen Raycast aussenden, um ein anderes Spielobjekt zu überprüfen. Sagen wir, es ist eine Box, ich möchte auf die Rigidbody2D der Box zugreifen und Gewalt anwenden, wenn ich einen Schlüssel drücke. Wie kann man mit dieser Art von Situation umgehen und welche Wege sind Ihrer Meinung nach am effizientesten und flexibelsten?Zugriff auf Rigidbody2D von RaycastHit2D Ziel?

Hier ist, was ich bisher arbeite.

RaycastHit2D hit = Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y - 0.6f), new Vector2(transform.position.x, transform.position.y - 1.6f)); 

if(hit.collider != null && Input.GetKey(KeyCode.E)) 
     { 
      // access gameobject stored to "hit" and AddForce to it's Rigidbody2D?? 
     } 

Antwort

1

Die Variable hit ist die Art von RaycastHit2D. RaycastHit2D hat die Eigenschaft von rigidbody, die die Rigidbody2D component of the object that was hit. zurückgibt So können Sie auf es von hit.rigidbody zugreifen.

Eine andere Alternative ist die Verwendung von hit.gameObject.GetComponent<Rigidbody2D>(), aber hüten Sie sich vor dem Leistungseinfluss von GetComponent() -Aufrufen.

Um diesem Rigidbody2D eine Kraft hinzuzufügen, stellen Sie einfach einen Vector2 und einen optionalen Force-Modus mit der AddForce() method bereit. hit.rigidbody.AddForce() würde dann funktionieren.

Sie sollten auch berücksichtigen, dass Sie den korrekten Ursprung und die richtige Richtung für Ihren Physics2D.Raycast-Anruf eingeben. Es sieht so aus, als ob Sie versuchen, zu erkennen, ob sich ein Objekt innerhalb von 1 Abstand in der y-Achse befindet. Wenn das der Fall ist, sollte die Richtung Vector2.up sein, und die Entfernung sollte 1.0f sein, etwas Ähnliches wie: Physics2D.Raycast(new Vector2(transform.position.x, transform.position.y - 0.6f), Vector2.up, 1.0f)

+1

Danke für die Antwort, nahm ich an, dass die .rigidbody ohne 2D warf mich ab, da sie 3D und 2D-Physikbibliotheken sind separat und funktionieren nicht miteinander. – Pyreal

+0

Froh, dass dies geholfen hat! Wenn eine Komponente ausschließlich das Suffix 2D aufweist, kann davon ausgegangen werden, dass sich die Eigenschaften der Komponente auch auf ihre 2D-Gegenstücke beziehen. –