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:// | ||