Я пытаюсь сделать игру в тетрис, где хозяин перемещает свои блоки, а клиент - свои.
Клиент слева, хост справа.
Таким образом, хост поддерживает перемещение объекта с тегом "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);
}