Photon Network/Fusion
[Photon Fusion 1.1.8] Setting/Getting Input
일등하이
2023. 11. 5. 22:58
반응형
PlayerInput 스크립트를 생성후 다음과 같이 작성한다
시프트 + 알트 + . 을 눌러 같은 이름의 문자열을 찾아 지우면 편하다
using System;
using System.Collections;
using System.Collections.Generic;
using Fusion;
using Fusion.Sockets;
using UnityEngine;
public struct PlayerInputData : INetworkInput
{
public Vector3 direction;
}
public class PlayerInput : MonoBehaviour, INetworkRunnerCallbacks
{
private void Start()
{
NetworkManager.Instance.SessionRunner.AddCallbacks(this);
}
private void Update()
{
}
#region INetworkRunnerCallbacks
public void OnPlayerJoined(NetworkRunner runner, PlayerRef player)
{
}
public void OnPlayerLeft(NetworkRunner runner, PlayerRef player)
{
}
public void OnInput(NetworkRunner runner, NetworkInput input)
{
PlayerInputData inputData = new PlayerInputData();
inputData.direction = Vector3.forward;
input.Set(inputData);
}
public void OnInputMissing(NetworkRunner runner, PlayerRef player, NetworkInput input)
{
}
public void OnShutdown(NetworkRunner runner, ShutdownReason shutdownReason)
{
}
public void OnConnectedToServer(NetworkRunner runner)
{
}
public void OnDisconnectedFromServer(NetworkRunner runner)
{
}
public void OnConnectRequest(NetworkRunner runner, NetworkRunnerCallbackArgs.ConnectRequest request, byte[] token)
{
}
public void OnConnectFailed(NetworkRunner runner, NetAddress remoteAddress, NetConnectFailedReason reason)
{
}
public void OnUserSimulationMessage(NetworkRunner runner, SimulationMessagePtr message)
{
}
public void OnSessionListUpdated(NetworkRunner runner, List<SessionInfo> sessionList)
{
}
public void OnCustomAuthenticationResponse(NetworkRunner runner, Dictionary<string, object> data)
{
}
public void OnHostMigration(NetworkRunner runner, HostMigrationToken hostMigrationToken)
{
}
public void OnReliableDataReceived(NetworkRunner runner, PlayerRef player, ArraySegment<byte> data)
{
}
public void OnSceneLoadDone(NetworkRunner runner)
{
}
public void OnSceneLoadStart(NetworkRunner runner)
{
}
#endregion
}
RunnerPrefab을 더블 클릭해 프리팹 모드로 들어간후 PlayerInput컴포넌트를 부착 해준다
Getting Input
PlayerMovement스크립트를 생성후 다음과 같이 작성하자
using System.Collections;
using System.Collections.Generic;
using Fusion;
using UnityEngine;
public class PlayerMovement : NetworkBehaviour
{
public float moveSpeed;
public override void FixedUpdateNetwork()
{
base.FixedUpdateNetwork();
if (GetInput<PlayerInputData>(out var inputData))
{
transform.Translate(inputData.direction * Runner.DeltaTime);
}
}
}
NetworkPlayer프리팹을 더블 클릭해 프리팹 모드로 들어가서 PlayerMovement컴포넌트를 부착 한다
PlayerSpawner 클래스의 OnPlayerJoined 메서드에서 position y 값을 수정 한다
카메라 위치와 각도를 조절후
반응형