Ejemplo n.º 1
0
    private void updateLean()
    {
        float jakDlhoVeVzduchu = 0.5f;

        // auto ani koleso nie je v ziadnej kolizii
        if (!this.wheelsCollisionAny && !this.carCollisionAny && !this.finish)
        {
            leaningDirectionLast += Time.deltaTime;
            // auto sa v smere/proti smere hodinovej rucicky
            if (leaningDirection != 0)
            {
                leaningDirection = CustomInput.GetDirection() * -1;

                // uzivatel stlaca sipku do smeru naklanani vozidla
                if (CustomInput.GetDirection() * leaningDirection > 0)
                {
                    // zrychlim rychlost naklanani
                    leaningValue += Time.deltaTime * (jakRychloZrychluje / jakDlhoZrychluje);
                    if (leaningValue > jakRychloZrychluje)
                    {
                        leaningValue = jakRychloZrychluje;
                    }
                }
                else
                {
                    // ak uzivatel prestal stlacat sipku otacana, zacne sa spomalovat se zrychlovanim
                    leaningValue -= Time.deltaTime * (jakDlhoSpomaluje / jakDlhoZrychluje);

                    // ak uzivatel navyse stlaca sipku do opacneho smeru naklanani, tak spomaleni zrychli
                    if (CustomInput.GetDirection() < 0)
                    {
                        leaningValue -= Time.deltaTime * (jakRychloZrychluje / jakDlhoZrychluje);
                    }

                    // aj ked uzivatel stlaca sipku do opacneho smeru, vzdycky auto musi prejst cez nulovu uroven naklanani
                    if (leaningValue < 0)
                    {
                        leaningValue     = 0;
                        leaningDirection = 0;
                    }
                }
                // auto sa zatial nenaklana
            }
            else if (leaningDirectionLast >= jakDlhoVeVzduchu)
            {
                // nastavim smer a silu otacania
                leaningDirection = CustomInput.GetDirection() * -1;

                if (leaningDirection != 0)
                {
                    leaningValue = Time.deltaTime * (jakRychloZrychluje / jakDlhoZrychluje);

                    // zablokujem otacanie fyzickalnym enginom
                    this.gameObject.GetComponent <Rigidbody2D>().fixedAngle = true;
                }
            }
            this.transform.Rotate(new Vector3(0, 0, 50 * leaningDirection), 1f);
            // pri lubovolnej kolizii zastavim aktualne otacanie
        }
        else
        {
            leaningDirectionLast = 0;
            leaningDirection     = 0;
            leaningValue         = 0;

            // povolim otacanie fyzickalnym enginom
            this.gameObject.GetComponent <Rigidbody2D>().fixedAngle = false;
        }
    }
Ejemplo n.º 2
0
 private void updateCarControl()
 {
     //this.direction = Input.GetAxis ("Vertical");
     //this.direction = CustomInput.GetAxis ("Vertical");
     this.direction = CustomInput.GetDirection();
 }