private IEnumerator ElectronChargeEffect() { GameObject plusCable = GameObject.Find("Cable+"); GameObject minusCable = GameObject.Find("Cable-"); int numberOfElectrons = Mathf.Abs(Mathf.RoundToInt(powerVoltage - voltage)) * 2; float electronTimeInterval = 5 * seriesResistance * capacitance / numberOfElectrons; float electronSpeed = 0.01f; while (numberOfElectrons > 0 && chargeState != ChargeState.IDLE) { Charge electron = chargePoolHander.GetNewElectron(); chargesOnCable.Add(electron); PathFollower pathFollower = electron.GetComponent <PathFollower>(); pathFollower.maxSpeed = electronSpeed; if (voltage > powerVoltage) { electron.transform.position = plate1.transform.position; pathFollower.SetPath(minusCable.GetComponent <IPath>()); } else { electron.transform.position = plate2.transform.position; pathFollower.SetPath(plusCable.GetComponent <IPath>()); } numberOfElectrons--; yield return(new WaitForSecondsWithPause(electronTimeInterval)); } }
void OnCollisionEnter2D(Collision2D col) { if (col.gameObject.tag == "Ground") { isGrounded = true; hasChargedOnce = false; isCharging = false; if (!isCrouching) { Charge.GetComponent <SpriteRenderer>().enabled = false; Charge.GetComponent <BoxCollider2D>().enabled = false; gameObject.GetComponent <BoxCollider2D>().enabled = true; gameObject.GetComponent <CircleCollider2D>().enabled = true; } if (!gameObject.GetComponent <PlayerBase>().isDeath()) { transform.eulerAngles = new Vector3(0, 0, 0); } } }
IEnumerator StopCharge() { yield return(new WaitForSeconds(0.5f)); if (isCharging) { hasChargedOnce = true; isCharging = false; Vector3 stopVelocity = new Vector3(0, playerRb.velocity.y, 0); playerRb.velocity = stopVelocity; Charge.GetComponent <SpriteRenderer>().enabled = false; Charge.GetComponent <BoxCollider2D>().enabled = false; gameObject.GetComponent <BoxCollider2D>().enabled = true; gameObject.GetComponent <CircleCollider2D>().enabled = true; if (!gameObject.GetComponent <PlayerBase>().isDeath()) { transform.eulerAngles = new Vector3(0, 0, 0); } } }