private IEnumerator JumpCharge() { float chargeTime = 0.0f; while (Input.GetKey(KeyCode.Space)) { chargeTime += Time.deltaTime; if (chargeTime > m_JumpMaxChargeTime) { chargeTime = m_JumpMaxChargeTime; } m_Model.localScale = new Vector3(1, Mathf.Lerp(1.0f, m_JumpMaxSquashAmount, Interpolation.CubicOut(chargeTime / m_JumpMaxChargeTime)), 1); yield return(null); } m_Model.localScale = Vector3.one; float chargePercentage = Interpolation.CubicOut(chargeTime / m_JumpMaxChargeTime); float force = Mathf.Lerp(m_JumpMinForce, m_JumpMaxForce, chargePercentage); //calculate velocity from force Vector3 velocity = transform.up * force; velocity += transform.forward * m_Speed; m_CurrentState = PlayerState.Airborne; m_AirVelocity = velocity; }
public override void Charge() { charge += Time.deltaTime / AttackSpeed; charge = Mathf.Min(charge, 1.0f); float t = Interpolation.CubicOut(charge); Vector3 spearPos = Interpolation.BezierCurve(StartPos, spearChargePos.localPosition, t); spearModel.transform.localPosition = spearPos; this.currentDamage = Mathf.Lerp(MinDamage, Damage, charge);//charge == 1 ? Damage : MinDamage; this.currentKnockback = charge == 1 ? Knockback : MinKnockback; }
public override void Charge() { if (!currArrow) { currArrow = GameObject.Instantiate(ArrowPrefab, this.transform); //currArrow = arrowPool.Create(); //currArrow.transform.SetParent(this.transform); } charge += Time.deltaTime / AttackSpeed; charge = Mathf.Min(charge, 1.0f); float t = Interpolation.CubicOut(charge); Vector3 arrowPos = Interpolation.BezierCurve(this.transform.position, ChargedArrowPos.position, t); currArrow.transform.position = arrowPos; }
private IEnumerator CameraDeathAnimation() { // Play Sound string[] sounds = { "ceramic_shatter1", "ceramic_shatter2", "ceramic_shatter3", }; AudioManager.Instance.PlaySoundAtLocation(sounds[Random.Range(0, sounds.Length)], ESoundChannel.SFX, transform.position); // Disable Player this.enabled = false; collider.enabled = false; health.Resistance = DamageType.BASIC | DamageType.EXPLOSIVE | DamageType.FIRE | DamageType.ICE | DamageType.LIGHTNING | DamageType.EARTH | DamageType.TRUE; // Enable Broken Pot brokenPot.transform.parent = null; brokenPot.gameObject.SetActive(true); LevelManager.Instance.MoveToScene(brokenPot.gameObject); brokenPot.Explode(3.0f, this.camera.transform.position); // Explosion Effect? int layermask = PhysicsCollisionMatrix.Instance.MaskForLayer(this.gameObject.layer); Collider[] colliders = Physics.OverlapSphere(Player.Instance.transform.position, 2.0f, layermask); foreach (Collider c in colliders) { Enemy enemy = c.GetComponentInChildren <Enemy>(); if (enemy == null) { enemy = c.GetComponentInParent <Enemy>(); } if (enemy != null) { Vector3 dir = c.transform.position - Player.Instance.transform.position; dir = dir.normalized; enemy.Knockback(dir * 5, 1.0f); } } // Deparent camera this.camera.transform.parent = null; // Hide Weapon Weapon currWeapon = GetCurrentWeapon(); currWeapon.gameObject.SetActive(false); currWeapon.transform.SetParent(WeaponParent.transform, false); PlayerHud.Instance.DisablePlayerHud(); DeathScreen.Instance.EnableDeathScreen(); // Determine Camera Destination float length = 1.0f; float startTime = Time.time; Vector3 startPos = -this.transform.forward + camera.transform.position; Vector3 endPos = -this.transform.forward * CameraDeathDistance; endPos = Quaternion.Euler(CameraDeathRotation, 0.0f, 0.0f) * endPos; endPos += camera.transform.position; while (Time.time < startTime + length) { float t = (Time.time - startTime) / length; Time.timeScale = Mathf.Max(1 - t, MinDeathTimeScale); float alpha = Mathf.Lerp(0, 128, t); DeathScreen.Instance.SetBackgroundAlpha(alpha); t = Interpolation.CubicOut(t); Vector3 pos = Vector3.Lerp(startPos, endPos, t); this.camera.transform.position = pos; this.camera.transform.LookAt(this.transform); if (InputManager.GetButtonDown("UI_Submit")) { Respawn(); } yield return(null); } DeathScreen.Instance.SetBackgroundAlpha(128); Time.timeScale = 0.0f; // Check for restart while (true) { if (InputManager.GetButtonDown("UI_Submit")) { Respawn(); } yield return(null); } }