Esempio n. 1
0
    void Update()
    {
        // Si la partida no ha acabado, el MasterClient genera objetos.
        if (PhotonNetwork.IsMasterClient && !logic.MatchEnded)
        {
            // Fórmula de Spawn, tiene en cuenta tiempo entre generaciones
            // distancia a ambos jugadores y si está vacío el punto donde intenta.
            time += Time.deltaTime;
            float interval = numElements < minElements ? fastInterval : normalInterval;
            if (time > interval && numElements < maxElements)
            {
                // Modelo y punto escogidos al azar
                GameObject model = models[Random.Range(0, numModels)];
                Spawn      spawn = spawnpoints[Random.Range(0, numSpawnpoints)];

                // Distancias
                float d1 = Vector3.Distance(spawn.Position, GoodGuy.transform.position);
                float d2 = Vector3.Distance(spawn.Position, BadGuy.transform.position);

                // Si se cumplen las condiciones lo genera.
                if (spawn.IsEmpty && d1 > securityDistance && d2 > securityDistance && Mathf.Abs(d1 - d2) <= maxDistanceDifference)
                {
                    spawn.GenerateChild(model, randomRotation);
                    numElements++;
                    time = 0;
                }
            }
        }
    }