Jump to content
Unity Insider Forum

Archived

This topic is now archived and is closed to further replies.

Coooder

Laser zur Maus rotieren lassen

Recommended Posts

Hallo Leute!

Ich versuch meine Laser Waffe in Richtung der Maus rotieren zu lassen.

An der Start Position (0,0,0) funktioniert das sehr gut (Bild 01) ....

Fliegt man jedoch an eine andere Position schießt er ganz wo anders hin (Bild 02) ...

hier der Code:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;

if (Physics.Raycast(ray, out hit))
{
	Quaternion rotation = Quaternion.LookRotation(hit.point);
    laserBeam.transform.rotation = rotation;
}

 

Ich habe eine unsichtbare Plane auf der Höhe 0 auf der Y Achse damit der Raycast etwas trifft. Und damit der Strahl nicht nach unten schießt.

 

Hat da jemand eine Idee woran das liegen kann?

 

01.png

02.png

Share this post


Link to post
Share on other sites

Quaternion.LookRotation nimmt einen Blickrichtungs-Vektor und gibt dir die Rotation zurück, die ein Objekt haben muss, um in eben diese Richtung zu "gucken". Knackpunkt ist hier das Wort "Richtung", denn wenn du die Einschlagsposition des Rays übergibst, dann ist das nicht dasselbe wie eine Richtungsangabe. Nehmen wir an, der Vektor entspricht (-1,1), dann steht das für "oben links". Wenn dein Schiff sich aber nicht am Nullpunkt befindet, sondern z.B. auf Position (-1, 2), dann müsste das Schiff ja in Richtung (0,-1) schauen, also nach unten.

Um die Richtung rauszukriegen, die da reingehört, musst du vom Zielpunkt den Ausgangspunkt, also die Position des Schiffes, abziehen.

Quaternion rotation = Quaternion.LookRotation(hit.point - transform.position);

So nebenbei: Wenn du Plane.Raycast benutzt statt Physics.Raycast, dann kannst du den Collider löschen und umgehst eine Menge potentiellen Ärgers.

Share this post


Link to post
Share on other sites

×
×
  • Create New...