Пример #1
0
    void Start()
    {
        InvokeRepeating("RespawnFromPool", 0f, TIME_BETWEEN_ASTEROID);

        _pool = new GameObject[OBJECT_POOL_SIZE];
        for (int i = 0; i < OBJECT_POOL_SIZE; ++i)
        {
            _pool[i]      = (GameObject)Instantiate(_asteroidPrefab, UtilBehaviour.GetRandomAsteroidPosition(), Random.rotation);
            _pool[i].name = "AsteroidPoolObject" + i;

            //Set delegate to call fragments when it is destoyed
            _pool[i].GetComponent <AsteroidBehaviour>()._delegate += new SpawnFragmentDelegate(SpawnFragment);

            //Random Vector3 velocity
            _pool[i].GetComponent <Rigidbody> ().velocity = new Vector3(
                Random.Range(-ASTEROID_VELOCITY, ASTEROID_VELOCITY) * 0.5f,
                0f,
                Random.Range(-ASTEROID_VELOCITY, ASTEROID_VELOCITY) * 0.5f);

            _pool[i].SetActive(true);
            _pool[i].transform.parent = this.gameObject.transform;

            NetworkServer.Spawn(_pool[i]);
        }
    }
Пример #2
0
    void FixedUpdate()
    {
        if (!isLocalPlayer || _isDead)
        {
            return;
        }

        if (BoostButtonBehaviour.instance.pressed)
        {
            if (!_boosted)
            {
                _boost.Play();
                _boosted = true;

                _rb.AddForce(transform.forward * _BOOST_SPEED, ForceMode.Acceleration);
            }
            else
            {
                _rb.AddForce(transform.forward * _SPEED, ForceMode.Acceleration);
            }
        }
        else
        {
            _boosted = false;
        }

        if (UtilBehaviour.IsOutOfWorld(_rb.position))
        {
            _outOfCombatAreaObserver.OnNotify(true);
        }
        else
        {
            _outOfCombatAreaObserver.OnNotify(false);
        }
    }
Пример #3
0
    void Update()
    {
        if (!isServer)
        {
            return;
        }

        if (UtilBehaviour.IsOutOfWorld(gameObject.transform.position) && !_destoyed)
        {
            _destoyed = true;
            CmdDestroy(true);
        }


        /// From initial asteroid position to game position
        if (_startAnimation && Mathf.Abs(transform.position.y) < UtilBehaviour.Y_GAME - IGNORE_LERP)
        {
            transform.position = Vector3.Lerp(transform.position,
                                              new Vector3(transform.position.x,
                                                          UtilBehaviour.Y_GAME,
                                                          transform.position.z),
                                              Time.deltaTime * START_ANIMATION_DURATION);
        }
        else
        {
            _startAnimation    = false;
            transform.position = new Vector3(gameObject.transform.position.x, UtilBehaviour.Y_GAME, gameObject.transform.position.z);
        }
    }
Пример #4
0
 void RpcRespawn()
 {
     _score = _INITIAL_SCORE;
     _mesh.SetActive(true);
     _rb.angularVelocity = Vector3.zero;
     _rb.velocity        = Vector3.zero;
     _rb.AddForce(Vector3.zero);
     _rocket.Play();
     gameObject.transform.position = UtilBehaviour.GetRandomPosition();
     gameObject.transform.rotation = Quaternion.identity;
     _isDead = false;
 }
Пример #5
0
    /// <summary>
    /// This method spawn each client joined on server.
    /// </summary>
    /// <param name="conn">Client connection</param>
    /// <param name="playerControllerId">Player controller identifier.</param>
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        foreach (GameObject prefab in spawnPrefabs)
        {
            //TODO: if (PlayerBehaviour.instance.GetShip () == prefab.transform.name) {
            GameObject playerShip = (GameObject)GameObject.Instantiate(prefab, UtilBehaviour.GetRandomPosition(), Quaternion.identity);
            //GameObject playerShip = (GameObject)GameObject.Instantiate (prefab, new Vector3(0,6,0), Quaternion.identity);

            NetworkServer.AddPlayerForConnection(conn, playerShip, playerControllerId);
            break;
            //}
        }
    }
    void Update()
    {
        if (!isServer)
        {
            return;
        }

        if ((UtilBehaviour.IsOutOfWorld(gameObject.transform.position) ||
             UtilBehaviour.IsOutOfY(gameObject.transform.position.y)) && !_destoyed)
        {
            _destoyed = true;
            CmdDestroy(true);
        }
    }
Пример #7
0
    /// <summary>
    /// Method to respawn asteroid from pool.
    /// </summary>
    void RespawnFromPool()
    {
        foreach (GameObject obj in _pool)
        {
            if (!obj.activeInHierarchy)
            {
                obj.transform.position   = UtilBehaviour.GetRandomAsteroidPosition();
                obj.transform.rotation   = Random.rotation;
                obj.transform.localScale = Vector3.one;
                obj.SetActive(true);

                NetworkServer.Spawn(obj);
                break;
            }
        }
    }