Inheritance: MonoBehaviour
    private void SpawnCoin()
    {
        Vector3 _point = new Vector3();

        foreach (CoinPickUp coinPickUp in _coinsPool)
        {
            if (coinPickUp.gameObject.activeSelf == true)
            {
                _point = _camera.WorldToViewportPoint(coinPickUp.transform.position);

                if (_point.y < 0)
                {
                    coinPickUp.gameObject.SetActive(false);
                }
            }
        }

        CoinPickUp _coinPickUp = _coinsPool.FirstOrDefault(c => c.gameObject.activeSelf == false);

        if (_coinPickUp != null)
        {
            _coinPickUp.gameObject.transform.position = transform.position;
            _coinPickUp.gameObject.SetActive(true);
            _coinPickUp.ResetState();
        }
    }
示例#2
0
 public void AddDrop(CoinPickUp drop)
 {
     if (drop.curentObject == CoinPickUp.PickupObject.coin)
     {
         coins            += drop.pickUpQuantity;
         cointsValues.text = "Coins: " + coins.ToString();
     }
     else if (drop.curentObject == CoinPickUp.PickupObject.gem)
     {
         gems           += drop.pickUpQuantity;
         gemsValues.text = "Gem: " + gems.ToString();
     }
 }
示例#3
0
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.CompareTag("Coin Pick Up"))
        {
            CoinPickUp script = other.GetComponent <CoinPickUp>();
            script.OnPickUp();
            score += script.score;
            UIManager.SetPlayerScoreText(score);
            if (score % 10 == 0)
            {
                PlayerDirectionController.increaseDeathCount();
            }
        }
        if (other.gameObject.CompareTag("Light Orb Pick Up"))
        {
            LightOrbPickUp script = other.GetComponent <LightOrbPickUp>();
            script.OnPickUp();
            GameStateController.SetPlayerBrightnessDiff(script.brightness);
        }

        /*if(other.gameObject.CompareTag("SpeedChange Pick Up"))
         * {
         *  SpeedChangePickUp script = other.GetComponent<SpeedChangePickUp>();
         *  script.OnPickUp();
         *  CachedSpeed = speed;
         *  speed = script.GetNewSpeed(speed);
         *  CurrentSpeedPowerupLength = SpeedPowerupLength;
         *  UIManager.SetPlayerSpeedText(speed);
         * }*/

        if (other.gameObject.CompareTag("Mirror"))
        {
            if (!other.gameObject.GetComponent <ReflectObject>().MirrorHit)
            {
                Vector3 ReflectionAngle = Vector3.Reflect(transform.forward, other.transform.forward);
                transform.forward = ReflectionAngle;
                other.gameObject.GetComponent <ReflectObject>().MirrorHit = true;
            }
        }
        if (other.gameObject.CompareTag("RefractionObject"))
        {
            float IndexOfIncidence  = 1;
            float IndexOfRefraction = 4;
            if (!other.gameObject.GetComponent <RefractObject>().MirrorHit)
            {
                Vector3 ReflectionAngle             = Vector3.Reflect(transform.forward, other.transform.forward);
                float   AngleBetweenReflectedPoints = Vector3.Angle(transform.forward, ReflectionAngle);
                float   AngleOfIncidence            = (180 - AngleBetweenReflectedPoints) / 2;
                Debug.Log(AngleOfIncidence);
                float   AngleOfRefraction          = Mathf.Asin(IndexOfIncidence * Mathf.Sin((AngleOfIncidence * Mathf.PI) / 180) / IndexOfRefraction);
                float   AngleOfRefractionInDegrees = (Mathf.Asin(AngleOfRefraction) * 180) / Mathf.PI;
                Vector3 N             = other.transform.forward;
                Vector3 s1            = transform.forward;
                Vector3 RefractionDir = (IndexOfIncidence / IndexOfRefraction) * (Vector3.Cross(N, Vector3.Cross(-N, s1))) - N * Mathf.Sqrt(1 - Mathf.Pow(IndexOfIncidence / IndexOfRefraction, 2) * Vector3.Dot(Vector3.Cross(N, s1), Vector3.Cross(N, s1)));
                transform.forward = RefractionDir;
                Debug.Log(AngleOfRefractionInDegrees);
                //Vector3 RefractionAngle = ;
                //transform.forward = ReflectionAngle;
                other.gameObject.GetComponent <RefractObject>().MirrorHit = true;
            }
        }
        if (other.gameObject.CompareTag("Wall"))
        {
            GameStateController.SetPlayerBrightnessDiff(-20);
            WallObstacle WallComponent = other.gameObject.GetComponent <WallObstacle>();
            if (WallComponent != null && WallComponent.RedirectPointTransform != null)
            {
                other.gameObject.GetComponent <WallObstacle>().WarpPlayerToRedirectPoint1();
            }
            else
            {
                GameStateController.OnPlayerLose();
            }
        }
        if (other.gameObject.CompareTag("Finish"))
        {
            GameStateController.OnPlayerWin();
            if (ProgressSaver != null)
            {
                ProgressSaver.GetComponent <SaveProgress>().SaveLevelProgress();
            }
        }
    }