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; } }
private void updateCarControl() { //this.direction = Input.GetAxis ("Vertical"); //this.direction = CustomInput.GetAxis ("Vertical"); this.direction = CustomInput.GetDirection(); }