示例#1
0
    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);
            }
        }
    }