Spigot Vektoren

  • Guten Abend,


    die Frage möge eventuell etwas blöd sein, aber ich wollte mich dennoch da nochmal Informieren.

    Ich habe nach längerer Zeit nun wieder 1-2 Sachen mit der Spigot 1.18 API entwickelt für einen Freund.


    Ich hab dabei Jumppads gemacht die einen Spieler ungefähr 50 Blöcke in eine Richtung schießen sollten....

    Dazu habe zuerst ganz normal die Javadocs angeschaut: https://hub.spigotmc.org/javad…g/bukkit/util/Vector.html


    Als ich dann festgestellt habe das der Vektor nicht wirklich an die 50 Blöcke kommt habe ich mir auch die ganze Seite nochmal durchgelesen: https://www.spigotmc.org/wiki/…rogramming-for-beginners/


    Ich hätte aber nie irgendwo gesehen das man einen Spieler nur begrenzt weit Beschleunigung anfügen könnte.



    Ich habe das ganze jetzt über 2 Vektoren, wobei ich den zweiten Vektor nach einer halben Sekunde anfüge gemacht.

    Aber das sollte eigentlich besser funktionieren oder?


    Der Vektor sollte laut meinen Verständnis des Spieler ungefär an mein Ziel von 50 Blöcken nach vorne und 12 Blöcke nach oben ran kommen...

    Code
    Vector vector = new Vector(0, 1.5D, 4.5D);



    Kann mir da jemand nochmal nachhelfen?

    Danke

  • Nach dem JavaDoc für die setVelocity Methode in der Klasse Entity wird dort die Geschwindigkeit in Metern/Tick gesetzt.
    Ich nehme also an, dass die Länge des Vektors der Geschwindigkeit in Metern/Tick entspricht.
    Nun würde ich aber natürlich auch vermuten, dass ein Vektor der Länge 2.5 den Spieler innerhalb von 20 Ticks (=1 Sekunde) nicht unbedingt 50 Blöcke weit schleudert, da ja auch noch andere Effekte wie zum Beispiel die Schwerkraft auf den Spieler einwirken.

    Vielleicht kannst du noch mehr von deinem Code mit uns teilen, damit wir dir vielleicht besser weiterhelfen können.

    Student at RWTH Aachen university | Java <3 | Handball <3 | Chess <3

  • Nach dem JavaDoc für die setVelocity Methode in der Klasse Entity wird dort die Geschwindigkeit in Metern/Tick gesetzt.
    Ich nehme also an, dass die Länge des Vektors der Geschwindigkeit in Metern/Tick entspricht.
    Nun würde ich aber natürlich auch vermuten, dass ein Vektor der Länge 2.5 den Spieler innerhalb von 20 Ticks (=1 Sekunde) nicht unbedingt 50 Blöcke weit schleudert, da ja auch noch andere Effekte wie zum Beispiel die Schwerkraft auf den Spieler einwirken.

    Vielleicht kannst du noch mehr von deinem Code mit uns teilen, damit wir dir vielleicht besser weiterhelfen können.

    Das mit den 20 Ticks habe ich auch bereits rausgefunden, deswegen gebe ich ihm nochmal nach 20 Ticks einen Geschwindigkeitsvektor...

    Naja was soll ich denn da Teilen, die meisten können sich vermutlich vorstellen das darunter player.setVelocity(vector); steht..


    Und das mit den nach 20 Ticks einen weiteren Vektor, naja das ist ein Runnable der eben nach 20 Ticks ausgeführt wird.

    Es funktioniert ja ansich dass ich dem Spieler nach 20 Ticks den Vektor nochmal übergebe, ich habe mich halt gefragt ob es nicht Möglich gäbe den Spieler 50 Blöcke zu schießen innerhalb von 20 Ticks


    Ach ja, wäre der Vektor (0,1.5,4.5) nicht 4.7 von der Länge?