Вы всегда устанавливаете
powers.transform.localPosition = Vector2.zero
Объект создается на уровне root без родителя, это равносильно установке его абсолютной позиции .... Вы всегда устанавливаете его в начало координат Unity.
Вы, вероятно, хотели бы породить его в позиции включения элементов в points
, например, например:
var powers = Instantiate(
powersPrefab[Random.Range(0, powersPrefab.Length)],
points[Random.Range(0, points.Length)].position,
Quaternion.identity
);
см. Instantiate
для доступных перегрузок.
Однако, поскольку вы также заявляете, что это для многопользовательской игры, вы не должны использовать Instantiate
вообще , поскольку это только порождает этот объект на этом клиенте, но не на других. Скорее всего, вам следует убедиться, что это устройство запускается только на одном из ваших клиентов, и вместо этого использовать PhotonNetwork.Instantiate
.
Что-то вроде, например,
public class SpawnPosition : MonoBehaviour
{
public GameObject[] powersPrefab;
public Transform[] points;
public float beat= (60/130)*2;
private float timer;
// Update is called once per frame
void Update()
{
// only run this if you are the master client
if(!PhotonNetwork.isMasterClient) return;
if (timer > beat)
{
// spawn the prefab object over network
// Note: This requires you to also reference the prefabs in Photon as spawnable object
Instantiate(
powersPrefab[Random.Range(0, 2)].name,
points[Random.Range(0, points.Length)].position,
Quaternion.identity,
0
);
timer -= beat;
}
timer += Time.deltaTime;
}
}