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

Aus Rising World Wiki
Keine Bearbeitungszusammenfassung
 
(3 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
'''Raycasting''' wird häufig in der Entwicklung von Videospielen verwendet,  
'''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.  
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.  
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 [https://trello.com/c/OC9pAtx5 Plugin-API] verfügen über integrierte [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html Funktionen],  
Unity 3D und die [https://trello.com/c/OC9pAtx5 Plugin-API] verfügen über integrierte [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html Funktionen],  
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.  
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).
 
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>
 
 
== 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




Zeile 9: Zeile 35:
* [[:Kategorie:Java|Wiki Kategorie: "Java"]]
* [[:Kategorie:Java|Wiki Kategorie: "Java"]]
* [[:Kategorie:Java-Codeschnipsel|Wiki Kategorie: "Java-Codeschnipsel"]]
* [[:Kategorie:Java-Codeschnipsel|Wiki Kategorie: "Java-Codeschnipsel"]]
* [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html javadoc RW: Class Player]
* [https://javadoc.rising-world.net/latest/net/risingworld/api/objects/Player.html JavaDoc RW: Class Player]
 
=== Forum ===
* [https://forum.rising-world.net/thread/12493-getting-started/ Rising World Forum: Getting started]
* [https://forum.rising-world.net/thread/4757-create-a-plugin/ Rising World Forum: Create a Plugin]
* [https://forum.rising-world.net/thread/12593-calculate-height-on-z-axis/?postID=93841&highlight=raycast#post93841 Rising World Forum: Calculate height on Z axis]
* [https://forum.rising-world.net/thread/12593-calculate-height-on-z-axis/?postID=93841&highlight=raycast#post93841 Rising World Forum: Calculate height on Z axis]


=== Kategorien ===
{| style="margin:auto; width:100%;" class="nix_wikitable"
|- style="vertical-align: top;"
| style="width:50%" | '''Tutorial Kategorien'''
<categorytree mode="categories" hideroot=off showcount=on>Plugin-API</categorytree>
| style="width:50%" | '''Plugin-Erstellung'''
<categorytree mode="categories" hideroot=off showcount=on>Plugin-Erstellung</categorytree>
|}


[[Kategorie:Plugin-API|Raycast]]
[[Kategorie:Plugin-API|Raycast]]
[[Kategorie:Java-Codeschnipsel|Raycast]]
[[Kategorie:Java-Codeschnipsel|Raycast]]

Aktuelle Version vom 1. November 2024, 11:19 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

Forum

Kategorien

Tutorial Kategorien
Plugin-API(1 K, 5 S)
Tutorial(2 S)
Plugin-Erstellung
Java(2 K, 6 S)
Unity(3 S)