Esempio n. 1
0
    void OnTriggerEnter(Collider other)
    {
        #region Main Trigger Enter

        if (other.CompareTag("Enemy") && (playerCore.playerHpManager.attacking == true || playerCore.playerHpManager.invincible == true))
        {
            //playerCore.Score.score = playerCore.Score.enemyScore + scoreEnemyGain;

            shaker.AddShakeEvent(shake);
            if (utopiaStyleBounce == true)
            {
                playerCore.rb.velocity = new Vector3(playerCore.rb.velocity.x, homingExplosionY, playerCore.rb.velocity.z);
            }
            else
            {
                if (playerCore.grounded == false)
                {
                    playerCore.rb.velocity = new Vector3(0f, homingExplosionY, 0f);
                }
            }
            //playerCore.SoundCore.mainPlayerAudio.PlayOneShot(playerCore.SoundCore.homing[Random.Range(0, playerCore.SoundCore.homing.Count - 1)]);
            if (homing == true)
            {
                playerCore.playerAnimationManager.playerAnimator.SetFloat("HomingAnim#", Mathf.RoundToInt(Random.Range(0f, 5f)));
                playerCore.playerAnimationManager.playerAnimator.Play("Homing");
            }
        }

        #endregion
    }
Esempio n. 2
0
 void OnStompLand()
 {
     stompLandParticles.Play();
     PlayerCore.Explode(transform.position, stompExplosionRadius, stompExplosionForce);
     //CameraShaker.Instance.ShakeOnce(shakeMagnitude, shakeRoughness, 0.1f, shakeFade);
     shaker.AddShakeEvent(shake);
     PlayerCore.playerAnimationManager.playerAnimator.Play("StompLand");
 }
    private void OnCollisionEnter(Collision other)
    {
        if (other.transform.CompareTag("Player"))
        {
            _ps.Damage(1);
            _st.AddShakeEvent(data);
        }

        Destroy(gameObject);
    }
Esempio n. 4
0
 private void Shake()
 {
     if (rb.velocity.magnitude >= speedThreshold)
     {
         _fallTime += Time.deltaTime * 0.1f;
         _fallTime  = Mathf.Clamp(_fallTime, 0, maxShake);
         st.AddShakeEvent(_fallTime, _fallTime, data.duration, data.blendOverLifetime, data.target);
     }
     else
     {
         _fallTime = 0;
     }
 }
Esempio n. 5
0
    public void Knockback(Vector3 knockbackVelocity)
    {
        _shakeTransform.AddShakeEvent(_knockBackShakeEvent);

        // Y part of velocity should affect gravity
        _currentVerticalVelocity = knockbackVelocity.y;
        knockbackVelocity.y      = 0;

        // rest of velocity affects movement
        _movementVelocity = knockbackVelocity;

        if (_grounded)
        {
            // move plant off ground
            transform.position += Vector3.up * 0.2f;
            _grounded           = false;
        }
    }
Esempio n. 6
0
    private void OnTriggerEnter(Collider other)
    {
        if (other.transform.CompareTag("Projectile"))
        {
            _st.AddShakeEvent(data);
            health--;

            if (health <= 0)
            {
                Application.Quit();
            }
        }

        var currentVignetteValue = _vg.intensity.value;

        StartCoroutine(Flinch(currentVignetteValue, targetVignetteValue, data.duration, data.blendOverLifetime,
                              returnedValue => _vg.intensity.value = returnedValue));

        var currentChromaticAberrationValue = _ca.intensity.value;

        StartCoroutine(Flinch(currentChromaticAberrationValue, targetChromaticAberrationValue, data.duration,
                              data.blendOverLifetime, returnedValue => _ca.intensity.value = returnedValue));
    }
    private void ShootWeapon()
    {
        if (!_canShoot || !Input.GetMouseButtonDown(0))
        {
            return;
        }

        _rb.AddForce(-cam.forward * knockbackStrength, ForceMode.Impulse);
        StartCoroutine(FadeUI(_cooldownBarGroup.alpha, _canShoot ? 1 : 0));
        _canShoot = false;

        for (var i = 0; i < pelletCount; i++)
        {
            var direction = cam.forward;
            var spread    = Vector3.zero;

            spread += cam.up * Random.Range(-1f, 1f);
            spread += cam.right * Random.Range(-1f, 1f);

            direction += spread.normalized * Random.Range(0f, pelletSpread);

            if (!Physics.Raycast(transform.position, direction, out var hit, maxRange, layers))
            {
                continue;
            }
            var hitTag = hit.transform.tag;

            switch (hitTag)
            {
            case "Enemy":
                Destroy(hit.transform.gameObject);
                esm.FreeSpawner(hit);
                PlayerStats.Score += GameStats.TurretPoints;
                break;

            case "Projectile":
                Destroy(hit.transform.gameObject);
                PlayerStats.Score += GameStats.ProjectilePoints;
                break;

            case "Generator":
                var lg = hit.transform.GetComponent <LaserGenerator>();
                if (lg.isOn)
                {
                    PlayerStats.Score += GameStats.GeneratorPoints;
                    lg.StartCoroutine(lg.Reset());
                }

                break;
            }

            if (hitTag == "Ground")
            {
                continue;
            }
            break;
        }

        var localPos  = weapon.localPosition;
        var targetPos = new Vector3(0, weaponKnockbackAnimationStrength * 0.2f, -weaponKnockbackAnimationStrength);

        st.AddShakeEvent(data);
        shotParticles.Play();
        StartCoroutine(WeaponKnockback(localPos, localPos + targetPos, 0.5f, weaponKnockbackAnimationCurve));
    }
Esempio n. 8
0
    private void Update()
    {
        _growthBar.IsGrowing = _plantCharacter.IsWet;
        if (_plantCharacter.IsWet)
        {
            _score += Time.deltaTime;
            _score  = Mathf.Clamp(_score, 0, ScoreGoal);

            _plantCharacter.Growth = _score / ScoreGoal;
            _growthBar.FillAmount  = _plantCharacter.Growth;

            if (_score > ScoreGoal)
            {
                ApplicationManager.Instance.PlayerWin();
            }
        }

        if (!_plantCharacter.IsDead)
        {
            Vector3 screenPoint = Camera.main.WorldToViewportPoint(_plantCharacter.transform.position);
            bool    onScreen    = screenPoint.x > 0 && screenPoint.x < 1 && screenPoint.y > 0 && screenPoint.y < 1;
            if (!onScreen)
            {
                if (_gameState == GameState.StartScreen)
                {
                    // Move the plant character to other side of the screen
                    if (screenPoint.x < 0)
                    {
                        _plantCharacter.transform.position += Camera.main.transform.right * CalculateCameraWidth();
                    }
                    if (screenPoint.x > 1)
                    {
                        _plantCharacter.transform.position -= Camera.main.transform.right * CalculateCameraWidth();
                    }
                    if (screenPoint.y < 0)
                    {
                        _plantCharacter.transform.position += Camera.main.transform.up * CalculateCameraHeight();
                    }
                    if (screenPoint.y > 1)
                    {
                        _plantCharacter.transform.position -= Camera.main.transform.up * CalculateCameraHeight();
                    }
                }
                else
                {
                    _plantCharacter.Die();

                    _shakeTransform.AddShakeEvent(_deathShakeEvent);

                    if (_setupCoroutine != null)
                    {
                        StopCoroutine(_setupCoroutine);
                    }

                    if (_birdSpawner != null)
                    {
                        _birdSpawner.IsSpawning = false;
                    }

                    _restartWindow.SetActive(true);
                }
            }
        }
    }
Esempio n. 9
0
 public void CamShake(ShakeTransformEventData data)
 {
     camShake.AddShakeEvent(data);
 }