Переместить объект клиентом с тегом - PullRequest
0 голосов
/ 31 октября 2018

Я пытаюсь сделать игру в тетрис, где хозяин перемещает свои блоки, а клиент - свои.

Клиент слева, хост справа.

Client on the left, host on the right.

Таким образом, хост поддерживает перемещение объекта с тегом "playerObject". Клиент должен перемещать объект с помощью тега «enemeyObject».

Похоже, что клиент не использует тег «врага, но перемещает объект playerObject.

Код для нереста в объектах:

    [ClientRpc]
void RpcSetTag()
{
    playerBlock.transform.gameObject.tag = "playerObject";
    enemyBlock.transform.gameObject.tag = "enemyObject";
}
IEnumerator SpawnObjects()
{
    rnd = Random.Range(0, objects.Length);
    playerBlock = Instantiate(objects[rnd], spawnPointPlayer.transform.position, objects[rnd].transform.rotation);
    enemyBlock = Instantiate(objects[rnd], spawnPointEnemy.transform.position, objects[rnd].transform.rotation);
    NetworkServer.Spawn(playerBlock);
    NetworkServer.Spawn(enemyBlock);
    RpcSetTag();
    yield return new WaitForSeconds(6f);
    CmdStartTimer();
}

код для перемещения объектов:

  void Update()
{
    if (isServer)
    {
        Debug.Log("SERVER");
        Server = true;
    }
    if (!isServer)
    {
        Client = true;
        Debug.Log("CLIENT");
    }
    if (Server == true)
    {
        block = GameObject.FindGameObjectWithTag("playerObject");
        Debug.Log(block);
    }
    if (Client == true)
    {
        block = GameObject.FindGameObjectWithTag("enemyObject");
        Debug.Log(block);
    }
    if (pressingL == true)
    {
        CmdMoveLeft();
        Debug.Log("MOVE LEFT");
    }
    if (pressingR == true)
    {
        CmdMoveRight();
        Debug.Log("MOVE RIGHT");
    }
    if (Input.GetKey(KeyCode.D))
    {
        Debug.Log("D");
        CmdMoveRight();
    }

    if (Input.GetKey(KeyCode.A))
    {
        Debug.Log("A");
        CmdMoveLeft();
    }

    if (Input.GetKeyDown(KeyCode.E))
    {
        CmdRotateRight();
        //background.transform.position = new Vector3(0.01f, 0, 0);
        //background.transform.Rotate(-90, 0, 0);
    }
    if (Input.GetKeyDown(KeyCode.Q))
    {
        CmdRotateLeft();
        //background.transform.position = new Vector3(0.01f, 0, 0);
        //background.transform.Rotate(+90, 0, 0);
    }
}

[Command]
public void CmdRotateLeft()
{
    block.transform.Rotate(-90, 0, 0);
}
[Command]
public void CmdRotateRight()
{
    block.transform.Rotate(+90, 0, 0);
}

[Command]
public void CmdMoveLeft()
{
    block.transform.Translate(Vector3.left * 1f * Time.deltaTime, Space.World);
}

[Command]
public void CmdMoveRight()
{
    block.transform.Translate(Vector3.right * 1f * Time.deltaTime, Space.World);
}
...