private void OnEnable() { _rb.useGravity = false; _rb.angularVelocity = Vector3.zero; _rb.velocity = Vector3.zero; _tr.rotation = _initialRotation; _tr.position = _initialPosition - 500 * _tr.forward + 10 * Vector3.down; StartCoroutine(Coroutines.OneAfterTheOther(Lerper.Lerp(_tr, 3, _initialPosition, _initialRotation), Rock())); }
// private void OnMouseEnter() // { // _initialColour = material.color; // material.color = Color.yellow; // } // // private void OnMouseExit() // { // material.color = _initialColour; // } private void Fire() { audioSource.PlayOneShot(fireSound); _primed = false; var cannonBall = Instantiate(cannonBallPrefab); cannonBall.transform.position = cannonBallSpawn.position; cannonBall.transform.rotation = transform.rotation; EventManager.Instance.cannonFired?.Invoke(); var rb = cannonBall.GetComponent <Rigidbody>(); var goalsOutcome = GameManager.Instance.GoalsOutcome(); var distanceToShip = (GameManager.Instance.EnemyPosition - transform.position).magnitude; var velocityMultiplier = (float)Polynomial.QuadraticFormula(a, b, c - distanceToShip).Item1; rb.velocity = velocityMultiplier * (transform.forward * 5 + Vector3.up); switch (goalsOutcome) { case Outcome.Over: rb.velocity *= 2; break; case Outcome.Under: rb.velocity /= 2; break; case Outcome.Achieved: break; case Outcome.NotAchieved: rb.velocity *= 0; break; default: throw new ArgumentOutOfRangeException(); } explosionEffect.Play(); StartCoroutine(Coroutines.OneAfterTheOther( Lerper.Lerp(transform, 0.1f, transform.position - transform.forward * 0.7f - Vector3.down * 0.3f, transform.rotation * Quaternion.Euler(-5, 0, 10)), Lerper.Lerp(transform, 0.5f, transform.position, transform.rotation))); }