Question by
oshriza · Jul 06, 2021 at 09:00 PM ·
photonrpcclient-server
Photon || How to sync and how to send random index data that generated to "mine" for other players?
The game has a stage with bricks created in the first place and starting to fall randomly and in random order.
What is happening right now is that in each client it looks different, because each client gets his random order.
Actually, it all happens inside "ShowBrickObject" function, I'm trying to sync the "indexNumber" between clients with no success because as I mentioned above, each client gets his random index.
I'm a bit stuck with this and trying to sync between them so they get the same indexes but without success, I wish someone could help here or suggest another solution!
Here is the code (before RPC)
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class BrickSpannerScript : MonoBehaviourPun
{
private PhotonView myPhotonView;
private float timeToFade = 1.0f;
public bool stopSpawning = false;
public float startTime;
public float spawnDelay;
public float delayBetweenIteration;
private int[] numberOfBricks = { 1, 2, 4, 2, 5, 3, 5, 2, 4, 4, 5, 7, 3, 6, 5 };
public List<GameObject> bricksLocationList = new List<GameObject>();
private int[] brickDropPosition;
void Start()
{
myPhotonView = GetComponent<PhotonView>();
brickDropPosition = new int[bricksLocationList.Count];
InvokeRepeating("SpawnObject", startTime, spawnDelay);
}
IEnumerator SpreadItems()
{
int randBrickNumber = numberOfBricks[Random.Range(0, numberOfBricks.Length - 1)];
for (int i = 0; i < randBrickNumber; i++)
{
ShowBrickObject();
yield return new WaitForSeconds(delayBetweenIteration);
}
}
void ShowBrickObject()
{
int indexNumber = Random.Range(0, bricksLocationList.Count);
bricksLocationList[indexNumber].GetComponent<Renderer>().enabled = true;
bricksLocationList[indexNumber].GetComponent<Rigidbody>().useGravity = true;
bricksLocationList.Remove(bricksLocationList[indexNumber]);
}
public void SpawnObject()
{
StartCoroutine(SpreadItems());
if (stopSpawning)
{
CancelInvoke("SpawnObject");
}
}
}
Comment