2

マルチプレイヤー ゲームを作成しており、クライアントで新しいオブジェクトをインスタンス化しようとしています。オブジェクトは、そのプレーヤーだけが制御する必要があります。

クライアントでインスタンス化してから、生成するだけで試しました。

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 人が制御するオブジェクトを作成しますか?

グーグルで検索してみましたが、何も見つかりませんでした。

ありがとう!

4

2 に答える 2

0

奇妙なことに、答えはわかりませんが、チャンネル #unity3d-unet の irc.freenode.net にコミュニティがあるかもしれません!

さらに、いくつかのリソースとコード スニペットがここに集められています: https://goo.gl/UmBBpM

于 2015-07-03T17:42:10.813 に答える