Minecraft neue setDirection() (Blickrichtung) setzten

modder_MC

Mitglied
Hallo,

ich programmiere zurzeit ein Minecraft Plugin. Für dieses Plugin muss ich nun die Blickrichtung meines Spielers an einen bestimmte stelle richte (unabhängig von Blöcken).

Ich habe mich bereits etwas schlau gemacht, allerdings keine Lösung gefunden.
Vielleicht gibt es ja jemanden der mir ein kleines Beispiel geben kann. Würde mich sehr freuen.

12483
Hier mein Code, werden keine Fehler etc. angezeigt.
Passiert allerdings auch nix );

VG
modder
Danke im voraus (;
 
Hast du das auf einem Forum?
Wenn x fünf ist:
5/2 - 5
= 2,5 - 5
= -2,5

Sorgt normalize dafür, dass die Zahlen nur von -1 bis 1 gehen? Wie legt es fest, was sozusagen 100% entspricht und somit als Grundlage dienen soll?
 
Hast du das auf einem Forum?
Wenn x fünf ist:
5/2 - 5
= 2,5 - 5
= -2,5

Sorgt normalize dafür, dass die Zahlen nur von -1 bis 1 gehen? Wie legt es fest, was sozusagen 100% entspricht und somit als Grundlage dienen soll?

Okay, Danke für den Hinweis (;

Weißt du zufällig einen alternative mit der ich die Direction von meinen Spieler festlegen kann.
Wäre echt net.

VG
modder
 
Hey,

wenn auch etwas spät hier eine mögliche Lösung:

In Minecraft können Vectoren nicht zur Veränderung der "Blickrichtung" benutzt werden. Um die Blickrichtung zu verändern musst du den Spieler teleportieren. player.teleport(location)

Im Location-Objekt können zwei Floats angegeben werden (yaw, pitch).

Der Wert Yaw bestimmt die Ausrichtung Links <-> Rechts
Der Wert Pitch bestimmt die Ausrichtung Oben <-> Unten

Anbei ein kleiner Schnipsel um einen Spieler an eine bestimmte Stelle schauen zu lassen:

Java:
private void lookAt(final Player player, final Location targetLocation) {
        final double xDiff, yDiff, zDiff;
        xDiff = targetLocation.getX() - player.getLocation().getX();
        yDiff = targetLocation.getY() - player.getLocation().getY();
        zDiff = targetLocation.getZ() - player.getLocation().getZ();
        final double distanceXZ = Math.sqrt(xDiff * xDiff + zDiff * zDiff);
        final double distanceY = Math.sqrt(distanceXZ * distanceXZ + yDiff * yDiff);
        float yaw = (float) Math.toDegrees(Math.acos(xDiff / distanceXZ));
        final float pitch = (float) (Math.toDegrees(Math.acos(yDiff / distanceY)) - 90);
        if (zDiff < 0.0)
            yaw += Math.abs(180 - yaw) * 2;
        yaw = yaw - 90;
        player.teleport(new Location(player.getWorld(), player.getLocation().getX(), player.getLocation().getY(), player.getLocation().getZ(), yaw, pitch));
    }

Viel Spaß noch 😉
 

Neue Themen


Zurück
Oben