Jump to content
Unity Insider Forum

Ziel suchen


Kojote

Recommended Posts

Grüße!

Ich bin gerade dabei das Target-System zu machen. Mein erste Idee war ein Box-Raycast vom Spieler zu machen, was ich aber recht schnell verworfen habe, da dieser ja immer in Blockrichtung des Charakters geht. Da die Kamera aber über dem Charakter schwebt, ist das relativ ungünstig. So bin ich auf die Idee gekommen, ein Ziel über die Kamera zu finden, über deren MIttelpunkt. Problem ist, wie schieß ich einen Strahl in entspechender Größe ab? Der Mittelpunkt der Kamera und der schmale Ray machen es recht schwer in der Entfernung genau ein Ziel zu treffen. Gibts da auch eine Art Box-Raycasting für die Camera? Achja das ganze müsste ohne Maus-Input erfolgen, ich will da nur eine Taste drücken, um das Ziel zu selektieren.

EDIT:

Hab nun Box-RayCasting auf die Kamera angewendet:

hitDetect = Physics.BoxCast(Camera.main.transform.gameObject.transform.position, transform.localScale, transform.forward, out hit, Camera.main.transform.gameObject.transform.rotation, maxHitDistanze, layerMask);

Problem ist nun, transform.forward, der Stahl geht immer nach vorn, nie in Blickrichtung, wie kann man das denn festlegen?

Zum anderen er schießt zwei strähle nah bei einander ab aber keine Box.

Grüße Kojote

Link zu diesem Kommentar
Auf anderen Seiten teilen

Transform.forward ist ja auch die Richtung in der Welt. Das ist nix anderes als Vector3(0,0,1). Ist also einfach in Z Richtung der Welt. Das kannst du mit Norden vergleichen.
Du guckst natürlich nicht immer nach Norden.
Also einfach mal die Scriptingreferenz befragt, was es denn alles für Transform Befehle gibt, und schwupps kommt das bei raus:
https://docs.unity3d.com/ScriptReference/Transform.TransformDirection.html

Und nutzen kannst du das so:
 

transform ich =Camera.main.transform;
Vector3 meinVorneImBezugZurWelt = ich.TransformDierction(ich.forward);

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Was ist ein TargetSystem für dich? Ich verstehe darunter mehrere Dinge. Deswegen habe ich dein Vorhaben noch nicht verstanden.

Willst du in einer bestimmten Radius ein Ziel finden / selektieren? Und wieso benutzt du nicht Camera.main.transform.forward?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich habs jetzt ganz anders gemacht, im Endeffekt war ich mal wieder einen Gedanken zu weit. Ich hab die Direktion nicht berechnet gehabt, sondern gleich den Vector3 als Ziel eingegeben.

Im Endeffekt war es aber auch nicht genau das was ich wollte. Ziel sollte es sein, dass man eine Taste drückt und das Objekt auf das man schaut, dass nächste Angriffsziel wird und dann im UI mit Lebenspunkten und Co angezeigt wird. Ist aber leider auf die Entfernung zu ungenau. Ich habs nun so gemacht, dass das Ziel als UI dann selektiert wird, wenn man den ersten Angriff auf das Objekt startet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Camera.main.transform.gameObject.transform.position

Alter!

vor 9 Stunden schrieb malzbie:

Transform.forward ist ja auch die Richtung in der Welt. Das ist nix anderes als Vector3(0,0,1).

Das stimmt leider nicht. Vector3.forward ist das gleiche wie new Vector3(0,0,1). Transform.forward ist die Richtung, in die das Objekt "schaut". transform.forward eines Objekts mit Rotation (0, 90, 0) wäre entsprechend (1, 0, 0). Anders gesagt: transform.forward ist ein Shorthand für transform.TransformDirection(Vector3.forward). Wenn du transform.TransformDirection(transform.forward) schreibst, kommt Käse dabei heraus.

vor 11 Stunden schrieb Kojote:

Problem ist nun, transform.forward, der Stahl geht immer nach vorn, nie in Blickrichtung, wie kann man das denn festlegen?

Ich nehme mal an, du willst den "vorne"-Vektor der Kamera haben. Hast aber nicht Camera.main.transform.forward geschrieben. Du benutzt hier den "vorne"-Vektor des Objekts, auf dem das Script liegt.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...