Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
godot [2025/01/01 22:04] jango [CharacterBody3D] |
godot [2025/01/31 10:18] (aktuell) jango [Links] |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
[[https:// | [[https:// | ||
- | {{https://godotengine.org/assets/ | + | [[https://www.youtube.com/watch? |
=====Bodies===== | =====Bodies===== | ||
Zeile 182: | Zeile 182: | ||
if position.x > 5.0 or position.x < -5.0: | if position.x > 5.0 or position.x < -5.0: | ||
speed = -speed | speed = -speed | ||
+ | </ | ||
+ | |||
+ | ====Raycast2D==== | ||
+ | |||
+ | < | ||
+ | extends Raycast2D | ||
+ | |||
+ | var raycast_length = 10.0 | ||
+ | |||
+ | func _ready(): | ||
+ | raycast.target_position = Vector2(0, raycast_length) | ||
+ | raycast.enabled = true | ||
+ | |||
+ | func _physics_process(delta): | ||
+ | if is_colliding(): | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | extends CharacterBody2D | ||
+ | |||
+ | var raycast_length = 10.0 | ||
+ | var raycast: RayCast2D | ||
+ | |||
+ | func _ready(): | ||
+ | raycast = RayCast2D.new() | ||
+ | raycast.target_position = Vector2(0, raycast_length) | ||
+ | raycast.enabled = true | ||
+ | add_child(raycast) | ||
+ | |||
+ | func _process(delta): | ||
+ | if raycast.is_colliding(): | ||
+ | print(" | ||
+ | else: | ||
+ | print(" | ||
</ | </ | ||
Zeile 208: | Zeile 245: | ||
</ | </ | ||
+ | < | ||
+ | func shoot(): | ||
+ | var space = get_world_3d().direct_space_state | ||
+ | var query = PhysicsRayQueryParameters3D.create( | ||
+ | global_position, | ||
+ | global_position - global_transform.basis.z * 2 | ||
+ | ) | ||
+ | var collision = space.intersect_ray(query) | ||
+ | if collision: | ||
+ | print(collision.collider.name) | ||
+ | </ | ||
=====Signals===== | =====Signals===== | ||
Zeile 516: | Zeile 564: | ||
extends CharacterBody3D | extends CharacterBody3D | ||
- | @export var maxSpeed :float = 10.0 | + | @export var maxSpeed :float = 1.0 |
@export var turnRate :float = 0.1 | @export var turnRate :float = 0.1 | ||
@onready var Gravity = ProjectSettings.get_setting(" | @onready var Gravity = ProjectSettings.get_setting(" | ||
Zeile 537: | Zeile 585: | ||
func _rotate(): | func _rotate(): | ||
var yaw = Input.get_axis(" | var yaw = Input.get_axis(" | ||
- | var roll = 0 #Input.get_axis(" | + | var roll = Input.get_axis(" |
- | var pitch = 0 #Input.get_axis(" | + | var pitch = Input.get_axis(" |
var direction = Vector3(pitch, | var direction = Vector3(pitch, | ||
if direction: | if direction: | ||
Zeile 570: | Zeile 618: | ||
child.engine_force = engine_force | child.engine_force = engine_force | ||
</ | </ | ||
+ | |||
+ | |||
+ | =====Networking===== | ||
+ | |||
+ | ====RPC==== | ||
+ | |||
+ | [[https:// | ||
+ | |||
+ | < | ||
+ | func _process(): | ||
+ | rpc(" | ||
+ | rpc_unreliable(" | ||
+ | rpc_function.rpc() | ||
+ | rpc_function.rpc_id(peer_id) # call it on a specified peer | ||
+ | | ||
+ | @rpc(mode, sync, transfer, channel) | ||
+ | func rpc_function(): | ||
+ | var sender = multiplayer.get_remote_sender_id() | ||
+ | if sender == get_multiplayer_authority(): | ||
+ | do_stuff() | ||
+ | </ | ||
+ | |||
+ | ===Mode=== | ||
+ | |||
+ | Von wem kann die Funktion ausgeführt werden. Default ist " | ||
+ | |||
+ | < | ||
+ | Node.set_multiplayer_authority() | ||
+ | </ | ||
+ | |||
+ | auf einer per-Peer-Basis konfigurieren. | ||
+ | |||
+ | * authority: Funktion kann **nur von dem Peer der die Multiplayer Authority hat** ausgeführt werden, nicht von anderen peers | ||
+ | * any_peer: Funktion kann **von jedem peer** ausgeführt werden | ||
+ | |||
+ | ===Sync=== | ||
+ | |||
+ | Wo wird die Funktion ausgeführt. Nur remote oder auch lokal. | ||
+ | |||
+ | * call_remote: | ||
+ | * call_local: Funktion wird beim Aufruf **remote und auch lokal** ausgeführt | ||
+ | |||
+ | ===Transfer=== | ||
+ | |||
+ | * unreliable: UDP | ||
+ | * unreliable_ordered: | ||
+ | * reliable: TCP | ||
+ | |||
+ | ===Channel=== | ||
+ | |||
+ | Muss immer das letzte Argument sein. | ||
=====Links===== | =====Links===== | ||
Zeile 578: | Zeile 677: | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
* [[https:// | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// | ||
+ | * [[https:// |