Using Input System with Fusion
Basically it should be possible to use the Input System from Unity with Fusion without much to worry about but i can't figure out how.
In this example i use the Fusion 102 Approach but want to switch this with the Input System.
In the Fusion 102 BasicSpawner the Input is managed like this:
public void OnInput(NetworkRunner runner, NetworkInput input) { var data = new NetworkInputData(); if (Input.GetKey(KeyCode.W)) Debug.Log("W"); data.direction += Vector3.forward; if (Input.GetKey(KeyCode.S)) data.direction += Vector3.back; if (Input.GetKey(KeyCode.A)) data.direction += Vector3.left; if (Input.GetKey(KeyCode.D)) data.direction += Vector3.right; input.Set(data); }
In my old project i used the input system like this:
And Added it in the old project to my Player Prefab so i could use it in the script like this:
void OnMove(InputValue value) { moveVal = value.Get<Vector2>() * moveSpeed; //the moveSpeed as public variable to change the impact of an item. Debug.Log("move value = " + moveVal); }
Just using OnMove, OnShoot, etc etc to geht the Player Moving.
So i assumed i had to get the information out ouf moveVal into OnInput. But i don't know how.
It is important that the movable Object acts correctly in the network.
Answers
-
Fusion does not really mind the input system you use. With the new one, yes, you want to register key-presses and use them
OnInput()
to get them networked. How that's done is up to your project, which we don't know.0 -
in this case i get a vector 2, everytime the players presses (W,A,S,D)
yes its more of a transfer problem in this case. I know that it is doable but i couldn't find anyone using the input system with Fusion so i used the older system for the time beeing.
its just that can't figure out how to get it basically like this:
public void OnInput(NetworkRunner runner, NetworkInput input) { var data = new NetworkInputData(); if /* function OnMove gets a Value, take that value "value.Get<Vector2>()" and use it here. input.Set(data); }
Because in the example of the Fusion 102 tutorial i get one value for every key i press while here i trigger the function OnMove when one of the key is pressed and have to get that information correctly connected to OnInput.
0