マルチプレイヤー ゲームを作成しており、クライアントで新しいオブジェクトをインスタンス化しようとしています。オブジェクトは、そのプレーヤーだけが制御する必要があります。
クライアントでインスタンス化してから、生成するだけで試しました。
public class Player : NetworkBehaviour
{
[SerializeField]
private Card _testCard;
void Update()
{
if (!isLocalPlayer) return;
if (Input.GetKeyDown(KeyCode.Space))
{
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit))
{
var card = Instantiate(_testCard);
card.transform.position = hit.point;
card.Name = "Test";
NetworkServer.Spawn(card.gameObject);
//or call this from a command, shown below
}
}
}
/*[Command]
void CmdPlayTestCard(string name, Vector3 position)
{
var card = Instantiate(_testCard);
card.transform.position = position;
card.Name = name;
NetworkServer.Spawn(card.gameObject);
}*/
}
これにより、クライアントでオブジェクトが生成され、それによって制御できますが、サーバーでは生成されません。
私も同じことをしましたCommand
が、どこでもインスタンス化されますが、クライアントはそれを制御できません。ただし、サーバーはそれを制御できます。
これを行う適切な方法は何ですか?サーバーではなくプレイヤーの 1 人が制御するオブジェクトを作成しますか?
グーグルで検索してみましたが、何も見つかりませんでした。
ありがとう!