Screenshake

This commit is contained in:
Yann Dupont 01 2022-04-03 18:43:27 -04:00
parent 3fefb5278f
commit 46e1d0e05b
3 changed files with 37 additions and 24 deletions

View File

@ -18,12 +18,14 @@ public class BloodSucker : MonoBehaviour {
VampireEntity vampireEntity; VampireEntity vampireEntity;
bool isSucking; bool isSucking;
float currentSuckTimer; float currentSuckTimer;
[HideInInspector] public ScreenShaker screenShaker;
[HideInInspector] public SoundManager soundManager; [HideInInspector] public SoundManager soundManager;
void Awake() { void Awake() {
vampireEntity = GetComponent<VampireEntity>(); vampireEntity = GetComponent<VampireEntity>();
bloodParticles.Stop(true, ParticleSystemStopBehavior.StopEmitting); bloodParticles.Stop(true, ParticleSystemStopBehavior.StopEmitting);
soundManager = FindObjectOfType<SoundManager>(); soundManager = FindObjectOfType<SoundManager>();
screenShaker = FindObjectOfType<ScreenShaker>();
} }
void FixedUpdate() { void FixedUpdate() {
@ -101,6 +103,7 @@ public class BloodSucker : MonoBehaviour {
currentTarget.bloodTokens -= 1; currentTarget.bloodTokens -= 1;
vampireEntity.HealDamage(healthGainFromSuck); vampireEntity.HealDamage(healthGainFromSuck);
// print("One token sucked"); // print("One token sucked");
screenShaker.Shake();
soundManager.PlaySound(suckSource, suckSounds, randomPitch:true, createTempSourceIfBusy:true); soundManager.PlaySound(suckSource, suckSounds, randomPitch:true, createTempSourceIfBusy:true);
if (currentTarget.bloodTokens == 0) { if (currentTarget.bloodTokens == 0) {
SetIsSucking(false); SetIsSucking(false);

View File

@ -21,6 +21,7 @@ public class PlayerMovement : MonoBehaviour {
VampireEntity vampireEntity = null!; VampireEntity vampireEntity = null!;
Animator animator = null!; Animator animator = null!;
public bool facingRight { get; private set; } = true; public bool facingRight { get; private set; } = true;
[HideInInspector] public ScreenShaker screenShaker;
[SerializeField] AudioSource jumpSource; [SerializeField] AudioSource jumpSource;
[SerializeField] AudioClip[] jumpSounds; [SerializeField] AudioClip[] jumpSounds;
@ -40,6 +41,7 @@ public class PlayerMovement : MonoBehaviour {
animator = GetComponentInChildren<Animator>(); animator = GetComponentInChildren<Animator>();
currentState = new ImmobileMovementState(this); currentState = new ImmobileMovementState(this);
soundManager = FindObjectOfType<SoundManager>(); soundManager = FindObjectOfType<SoundManager>();
screenShaker = FindObjectOfType<ScreenShaker>();
} }
void Start() { void Start() {
@ -193,11 +195,13 @@ public class PlayerMovement : MonoBehaviour {
// playerMovement.animator.SetBool("Jumping", true); // playerMovement.animator.SetBool("Jumping", true);
playerMovement.animator.Play("Player_Jump"); playerMovement.animator.Play("Player_Jump");
playerMovement.soundManager.PlaySound(playerMovement.jumpSource, playerMovement.jumpSounds, randomPitch: true, createTempSourceIfBusy: true); playerMovement.soundManager.PlaySound(playerMovement.jumpSource, playerMovement.jumpSounds, randomPitch: true, createTempSourceIfBusy: true);
playerMovement.screenShaker.Shake();
} }
public override void LeaveState() { public override void LeaveState() {
// playerMovement.animator.SetBool("Jumping", false); // playerMovement.animator.SetBool("Jumping", false);
playerMovement.animator.Play("Player_Idle"); playerMovement.animator.Play("Player_Idle");
playerMovement.soundManager.PlaySound(playerMovement.landSource, playerMovement.landSounds, randomPitch: true, createTempSourceIfBusy: true); playerMovement.soundManager.PlaySound(playerMovement.landSource, playerMovement.landSounds, randomPitch: true, createTempSourceIfBusy: true);
playerMovement.screenShaker.Shake();
} }
public override BaseState? FixedUpdateState() { public override BaseState? FixedUpdateState() {

View File

@ -2,40 +2,46 @@
using UnityEngine; using UnityEngine;
public class VampireEntity : Entity { public class VampireEntity : Entity {
[SerializeField] [field: Required] [SerializeField]
PlayerStats playerStats = null!; [field: Required]
PlayerStats playerStats = null!;
// [SerializeField] [Required] // [SerializeField] [Required]
// HealthBar healthBar; // HealthBar healthBar;
[HideInInspector] public PlayerMovement playerMovement; [HideInInspector] public PlayerMovement playerMovement;
[HideInInspector] public ScreenShaker screenShaker;
protected override void Awake() { protected override void Awake() {
base.Awake(); base.Awake();
transform.SetParent(arena.minionParent); transform.SetParent(arena.minionParent);
screenShaker = FindObjectOfType<ScreenShaker>();
} }
protected override void Start() { protected override void Start() {
base.Start(); base.Start();
base.entityType = EntityFlag.Vampire; base.entityType = EntityFlag.Vampire;
playerMovement = GetComponent<PlayerMovement>(); playerMovement = GetComponent<PlayerMovement>();
} }
protected override void Update() { protected override void Update() {
base.Update(); base.Update();
if (gameFlowManager.CanDoAction) if (gameFlowManager.CanDoAction)
TakeDamage(playerStats.bloodLossRate * Time.deltaTime, this, sound:false); TakeDamage(playerStats.bloodLossRate * Time.deltaTime, this, sound: false);
} }
// public override void TakeDamage(float amount) { public override bool TakeDamage(float amount, Entity other, bool sound = true) {
// base.TakeDamage(amount); if (sound) {
// healthBar.SetHealthFraction(Health / initialHealth); screenShaker.Shake();
// } }
public bool IsInSafeZone() => playerMovement.IsInSafeZone; return base.TakeDamage(amount, other, sound);
}
protected override void OnDied() { public bool IsInSafeZone() => playerMovement.IsInSafeZone;
OnEmpty();
gameFlowManager.GameOver(); protected override void OnDied() {
} OnEmpty();
gameFlowManager.GameOver();
}
} }