private void Awake() { if (instance) { Destroy(this); } instance = this; }
public override void Enter() { RuntimeManager.PlayOneShotAttached(PlayerDeathSFX, player.gameObject); snapIntensity.setValue(100f); PlayerAnimator.SetFloat("Velocity", 0); PlayerAnimator.SetTrigger("Death"); Velocity = Vector3.zero; PlayerAnimator.SetTrigger(DeathAnimationTag); respawnTimer = 0f; player.OnPlayerDeath?.Invoke(); StreakCounterUI.CollectDeath(); }
public override void StateUpdate() { rend.material.SetFloat("Vector1_6DD9F6DE", (1 - (respawnTimer / clip.length))); if (respawnTimer > clip.length) { TransitionTo <PlayerSpawningState>(); snapIntensity.setValue(0f); StreakCounterUI.DeathResetStreak(); SyncPowerManager.DeathResetSync(); } respawnTimer += Time.deltaTime; }
private void AddPlayerScore(ref Save[] saves) { playerSave.name = "Insert your name"; playerSave.value = StreakCounterUI.GetHighScore(); int savesLength = saves.Length + 1; Save[] newSave = new Save[savesLength + 1]; for (int i = 0; i < savesLength - 1; i++) { newSave[i] = saves[i]; } newSave[savesLength - 1] = playerSave; saves = newSave; }
private void HighruleSwordCollision() { bool newhit = false; RaycastHit[] hits = Physics.SphereCastAll(Position, CurrentAttacks[AttackIndex].Radius, Vector3.up, 0.01f, AttackLayer); Vector3 toTarget = Vector3.zero; foreach (RaycastHit raycastHit in hits) { if (hitObjects.Contains(raycastHit.transform.root) || currentAttackGrade == RhythmGrade.Miss && MissFactor == 0 || raycastHit.transform.root.GetComponent <IDamageable>() == null) { continue; } toTarget = raycastHit.transform.position; toTarget.y = Position.y; toTarget -= Position; bool isClose = toTarget.magnitude <= CurrentAttack.CloseAttackRange; toTarget = toTarget.normalized; if (Vector3.Angle(toTarget, Quaternion.Euler(0, isClose ? CurrentAttack.CloseAttackAngleOffset : CurrentAttack.AngleOffset, 0) * PlayerAnimator.transform.forward) > (isClose ? CurrentAttack.CloseAttackAngle : CurrentAttacks[AttackIndex].Angle) * 0.5f) { continue; } hitObjects.Add(raycastHit.transform.root); player.OnAttackHitt?.Invoke(raycastHit.transform.root.GetComponent <IDamageable>()); CurrentAttacks[AttackIndex].HitParticle.Play(raycastHit.collider.ClosestPoint(Position + PlayerCollider.height * Vector3.up), Quaternion.LookRotation((raycastHit.transform.root.position - Position).normalized)); RuntimeManager.PlayOneShotAttached(CurrentAttacks[AttackIndex].HitSFX, player.gameObject); raycastHit.transform.root.GetComponent <IDamageable>()?.TakeDamage(CurrentAttacks[AttackIndex].Damage, currentAttackGrade, PlayerAnimator.transform, MissFactor); StreakCounterUI.AddHit(currentAttackGrade); newhit = true; Quaternion rot = Quaternion.LookRotation(player.transform.InverseTransformDirection(Vector3.left * CurrentAttacks[AttackIndex].AngleOffset), Vector3.up); bloodSplat.Play(raycastHit.collider.ClosestPoint(Position + PlayerCollider.height * Vector3.up), rot); AttackFreeze(); } if (newhit) { //Can we do this only once per attack on enemy? SyncPowerManager.AddSyncPower(CurrentAttacks[AttackIndex].Damage); StreakCounterUI.AddMultiplier(currentAttackGrade); } swordLastPos = SwordTransform.position; }
public override void Enter() { if (!isOffColldown()) { TransitionTo <PlayerIdleState>(); return; } if (BeatManager.GetGrade() != RhythmGrade.Miss) { SyncPowerManager.KeepTheBeatGoing(); } StreakCounterUI.DashTimerReset(); RuntimeManager.PlayOneShot(DashSFX); normalDash = false; timer = 0; hitObjects.Clear(); ogInput = GetInputRelativeToCamera(); Debug.Log(ogInput); if (ogInput.magnitude <= 0.01f) { ogInput = PlayerAnimator.transform.forward; Debug.Log("Small man"); } ogInput = ogInput.normalized; PlayerAnimator.SetBool("inDash", true); for (int i = numDashes - 1; i >= 0; i--) { if (cooldowns[i] > dashCD) { normalDash = true; cooldowns[i] = 0f; break; } } OnDash?.Invoke(); dashVFX.enabled = true; dashChargeVFX.Play(); }
private void Update() { _vfx.SetFloat("BeatTime", _beatCurve.Evaluate(BeatManager.GetTimeToQuarterNote())); _vfx.SetFloat("Sync Intensity/Performance", StreakCounterUI.GetCurrentStreakPercentage()); }