Loading...
Loading...
Compare original and translation side by side
@rpcMultiplayerSpawnerMultiplayerSynchronizer@rpcMultiplayerSpawnerMultiplayerSynchronizerPacketPeersave-systemsPacketPeersave-systemsENetMultiplayerPeercreate_server(port, max)create_client(ip, port)multiplayer.multiplayer_peer1multiplayerpeer_connected(id)peer_disconnected(id)connected_to_serverconnection_failedserver_disconnected@rpc(...)Callablerpc()rpc_id(peer_id)multiplayer.get_remote_sender_id()@rpcset_multiplayer_authority(id)is_multiplayer_authority()MultiplayerSpawnerMultiplayerSynchronizerENetMultiplayerPeercreate_server(port, max)create_client(ip, port)multiplayer.multiplayer_peer1multiplayerpeer_connected(id)peer_disconnected(id)connected_to_serverconnection_failedserver_disconnected@rpc(...)Callablerpc()rpc_id(peer_id)multiplayer.get_remote_sender_id()@rpcset_multiplayer_authority(id)is_multiplayer_authority()MultiplayerSpawnerMultiplayerSynchronizerconst PORT := 7000
const MAX_PLAYERS := 8
func host() -> void:
var peer := ENetMultiplayerPeer.new()
var err := peer.create_server(PORT, MAX_PLAYERS)
if err != OK:
push_error("Cannot host: %s" % err); return
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(_on_peer_connected)
func join(ip := "127.0.0.1") -> void:
var peer := ENetMultiplayerPeer.new()
peer.create_client(ip, PORT)
multiplayer.multiplayer_peer = peer
multiplayer.connected_to_server.connect(func(): print("connected"))
func leave() -> void:
multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new()const PORT := 7000
const MAX_PLAYERS := 8
func host() -> void:
var peer := ENetMultiplayerPeer.new()
var err := peer.create_server(PORT, MAX_PLAYERS)
if err != OK:
push_error("Cannot host: %s" % err); return
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(_on_peer_connected)
func join(ip := "127.0.0.1") -> void:
var peer := ENetMultiplayerPeer.new()
peer.create_client(ip, PORT)
multiplayer.multiplayer_peer = peer
multiplayer.connected_to_server.connect(func(): print("connected"))
func leave() -> void:
multiplayer.multiplayer_peer = OfflineMultiplayerPeer.new()func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("fire") and is_multiplayer_authority():
request_fire.rpc_id(1) # send only to the server (id 1)func _unhandled_input(event: InputEvent) -> void:
if event.is_action_pressed("fire") and is_multiplayer_authority():
request_fire.rpc_id(1) # 仅发送给服务器(ID为1)undefinedundefinedextends CharacterBody2D
func _ready() -> void:
# The node name is the owning peer's id; that peer is the authority.
set_multiplayer_authority(name.to_int())
func _physics_process(delta: float) -> void:
if not is_multiplayer_authority():
return # only the owner reads input & moves
velocity = Input.get_vector("left", "right", "up", "down") * 200.0
move_and_slide()extends CharacterBody2D
func _ready() -> void:
# 节点名称为所属对等端的ID;该对等端拥有权限。
set_multiplayer_authority(name.to_int())
func _physics_process(delta: float) -> void:
if not is_multiplayer_authority():
return # 仅所有者可读取输入并移动角色
velocity = Input.get_vector("left", "right", "up", "down") * 200.0
move_and_slide()undefinedundefinedundefinedundefined@rpc@rpc"authority""any_peer""call_local"MultiplayerSpawneradd_child(node, true)@rpcNodeResourceRefCountedmultiplayer.multiplayer_peer = OfflineMultiplayerPeer.new()@rpc@rpc"authority""any_peer""call_local"MultiplayerSpawneradd_child(node, true)@rpcNodeResourceRefCountedmultiplayer.multiplayer_peer = OfflineMultiplayerPeer.new()MultiplayerSpawnerSceneMultiplayerauth_callbackcomplete_authreferences/replication-and-rpc.mdMultiplayerSpawnerSceneMultiplayerauth_callbackcomplete_authreferences/replication-and-rpc.mdgodot-nodes-scenesgodot-signals-groupsgodot-exportgodot-nodes-scenesgodot-signals-groupsgodot-export