Plugin-Erstellung/Java/Raycast: Unterschied zwischen den Versionen

Aus Rising World Wiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 5: Zeile 5:
mit denen sich [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html#raycast(float,int,boolean,net.risingworld.api.callbacks.Callback) ein Raycast] erzeugen lässt. <br/>
mit denen sich [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html#raycast(float,int,boolean,net.risingworld.api.callbacks.Callback) ein Raycast] erzeugen lässt. <br/>
Einfach gesagt: um im Spiel zu überprüfen, ob Hindernisse im Weg liegen, wird ein mathematischer Strahl (ray) in die Szene geschossen (casting).  
Einfach gesagt: um im Spiel zu überprüfen, ob Hindernisse im Weg liegen, wird ein mathematischer Strahl (ray) in die Szene geschossen (casting).  
Beispiel:
Findet heraus, ob ein Spieler einen anderen Spieler ansieht
<syntaxhighlight lang="java" line start="1">
player.raycast(Layer.getBitmask(Layer.REMOTEPLAYER), (RaycastResult result) -> {
//Wenn das Ergebnis (result) null ist, wurde keine Kollision gefunden
if(result != null)
{
//Überprüfen die Entfernung zu der Kollision
if(result.getDistance() < 10)
{
//wenn dist < 10 Einheiten dann zeige eine Nachricht
p.sendYellMessage("Do not look at other players!");
}
}
});
</syntaxhighlight>





Version vom 8. Juni 2023, 10:52 Uhr

Raycasting wird häufig in der Entwicklung von Videospielen verwendet, z.B. um die Sichtlinie des Spielers oder der KI zu bestimmen, wohin ein Projektil geht, Objekt-Positionierung, um Laser zu erzeugen und vieles mehr. Ein Raycast ist im Wesentlichen ein Strahl, der von einer Position im 3D-Raum ausgesendet wird und sich in eine bestimmte Richtung bewegt. Unity 3D und die Plugin-API verfügen über integrierte Funktionen, mit denen sich ein Raycast erzeugen lässt.
Einfach gesagt: um im Spiel zu überprüfen, ob Hindernisse im Weg liegen, wird ein mathematischer Strahl (ray) in die Szene geschossen (casting).

Beispiel: Findet heraus, ob ein Spieler einen anderen Spieler ansieht

player.raycast(Layer.getBitmask(Layer.REMOTEPLAYER), (RaycastResult result) -> {
	//Wenn das Ergebnis (result) null ist, wurde keine Kollision gefunden
	if(result != null)
	{
		//Überprüfen die Entfernung zu der Kollision
		if(result.getDistance() < 10)
		{
			//wenn dist < 10 Einheiten dann zeige eine Nachricht
			p.sendYellMessage("Do not look at other players!");
		}
	}
});


Zwecke

Raycasting kommt zu unterschiedlichsten Zwecken zum Einsatz, zum Beispiel um festzustellen:

  • ob ein Objekt auf dem Boden ist (Objekt-Positionierung)
  • ob eine Figur auf dem Boden steht oder sich in der Luft befindet
  • ob ein ein NPC eine andere Figur (z.B. den Spieler) sehen kann
  • welches Objekt von einem Geschoss getroffen wird


Siehe auch