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(); } }
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(); } }
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(); } } }