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 }
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); }
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; } }
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; } }
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)); }
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); } } } }
public void CamShake(ShakeTransformEventData data) { camShake.AddShakeEvent(data); }