Plugin-Erstellung/Java/Raycast: Unterschied zwischen den Versionen
Keine Bearbeitungszusammenfassung |
|||
(2 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
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 10: | Zeile 36: | ||
* [[: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
- Rising World Forum: Getting started
- Rising World Forum: Create a Plugin
- Rising World Forum: Calculate height on Z axis
Kategorien
Tutorial Kategorien
Tutorial (2 S) |
Plugin-Erstellung
|