Beyler yardım eder misiniz ? arabam dönerken takla atıyor

      Beyler yardım eder misiniz ? arabam dönerken takla atıyor

      ben yeni başladım araba üzerine proje yapmaya arabamın herşeyini yaptım yalnız arabam ileri giderken sola yada saga farketmiyor nereye dönersem ' ' yan 2 teker ' ' havaya kalkmaya baslıyor sonra takla atıyor.mesela sola dönüyorsam sağ iki tekeri kalkıyor sonra takla atıyor ufak bi dönmeyle takla atıyor. ve geri tusuna 1 kez basınca arka 2 teker zıplıyor. basılı tutunca bu seferde o şekil takla atıyor Sorun sizce ne olabilir heryerde araştırdım ama malesef çözüm bulamadım

      araba script ini hazır kullandım ondan olabilirmi ? ?(

      rigidboy ayarları şu şekilde;

      Mass:1692
      Drag : 0
      anguler Drag : 0.05

      Wheel Collider şu şekilde;

      Mass : 1
      radius : 0.4
      Suspansion distance : 0.2
      spring : 5500
      Damper : 50
      Stiffness factor : 0.32

      2.si Stiffness factor : 0.21



      araba kodum şu şekilde;


      #pragma strict
      @script AddComponentMenu("Vehicle/CarControl")

      public var Wheel_FL : WheelCollider;
      public var Wheel_FR : WheelCollider;
      public var Wheel_RL : WheelCollider;
      public var Wheel_RR : WheelCollider;
      public var GearRatio : float[];
      public var CurrentGear : int = 0;
      public var EngineTorque : float = 600.0;
      public var MaxEngineRPM : float = 2000.0;
      public var MinEngineRPM : float = 800.0;
      public var SteerAngle : float = 10;
      public var COM : Transform;
      public var Speed : float;
      public var maxSpeed : float = 150;
      public var skidAudio : AudioSource;
      private var EngineRPM : float = 0.0;
      private var motorInput : float;

      function Start () {
      rigidbody.centerOfMass = Vector3(COM.localPosition.x * transform.localScale.x, COM.localPosition.y * transform.localScale.y, COM.localPosition.z * transform.localScale.z);
      }

      function Update () {
      Speed = rigidbody.velocity.magnitude * 3.6f;
      rigidbody.drag = rigidbody.velocity.magnitude / 100;
      EngineRPM = (Wheel_FL.rpm + Wheel_FR.rpm)/2 * GearRatio[CurrentGear];

      ShiftGears();

      //Input For MotorInput.
      motorInput = Input.GetAxis("Vertical");

      //Audio
      audio.pitch = Mathf.Abs(EngineRPM / MaxEngineRPM) + 1.0;
      if (audio.pitch > 2.0) {
      audio.pitch = 2.0;
      }

      //Steering
      Wheel_FL.steerAngle = SteerAngle * Input.GetAxis("Horizontal");
      Wheel_FR.steerAngle = SteerAngle * Input.GetAxis("Horizontal");

      //Speed Limiter.
      if(Speed > maxSpeed){
      Wheel_FL.motorTorque = 0;
      Wheel_FR.motorTorque = 0;
      }else{
      Wheel_FL.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis("Vertical");
      Wheel_FR.motorTorque = EngineTorque / GearRatio[CurrentGear] * Input.GetAxis("Vertical");
      }

      //Input.
      if(motorInput <= 0){
      Wheel_RL.brakeTorque = 30;
      Wheel_RR.brakeTorque = 30;
      }else if (motorInput >= 0){
      Wheel_RL.brakeTorque = 0;
      Wheel_RR.brakeTorque = 0;
      }

      //SkidAudio.
      var CorrespondingGroundHit : WheelHit;
      Wheel_RR.GetGroundHit( CorrespondingGroundHit );
      if(Mathf.Abs(CorrespondingGroundHit.sidewaysSlip) > 10) {
      skidAudio.enabled = true;
      }else{
      skidAudio.enabled = false;
      }

      //HandBrake
      if(Input.GetButtonDown("Jump")){
      Wheel_FL.brakeTorque = 100;
      Wheel_FR.brakeTorque = 100;
      }
      if(Input.GetButtonUp("Jump")){
      Wheel_FL.brakeTorque = 0;
      Wheel_FR.brakeTorque = 0;
      }
      }

      function ShiftGears() {

      if (EngineRPM >= MaxEngineRPM) {
      var AppropriateGear : int = CurrentGear;

      for (var i = 0; i < GearRatio.length; i ++) {
      if(Wheel_FL.rpm * GearRatio < MaxEngineRPM) {
      AppropriateGear = i;
      break;
      }
      }
      CurrentGear = AppropriateGear;
      }

      if(EngineRPM <= MinEngineRPM) {
      AppropriateGear = CurrentGear;
      for ( var j = GearRatio.length-1; j >= 0; j -- ) {
      if ( Wheel_FL.rpm * GearRatio[j] > MinEngineRPM ) {
      AppropriateGear = j;
      break;
      }
      }
      CurrentGear = AppropriateGear;
      }
      }


      -----------------------------------buda tekerlere atıgım antirolbar Scripti ;------------------------------------------------------------------

      @script AddComponentMenu("Vehicle/AntiRollBar")

      var WheelL : WheelCollider;
      var WheelR : WheelCollider;
      var AntiRoll = 5000.0;

      function FixedUpdate () {
      var hit : WheelHit;
      var travelL = 1.0;
      var travelR = 1.0;
      var groundedL = WheelL.GetGroundHit(hit);

      if (groundedL)
      travelL = (-WheelL.transform.InverseTransformPoint(hit.point).y - WheelL.radius) / WheelL.suspensionDistance;
      var groundedR = WheelR.GetGroundHit(hit);
      if (groundedR)
      travelR = (-WheelR.transform.InverseTransformPoint(hit.point).y - WheelR.radius) / WheelR.suspensionDistance;
      var antiRollForce = (travelL - travelR) * AntiRoll;
      if (groundedL)
      rigidbody.AddForceAtPosition(WheelL.transform.up * -antiRollForce,
      WheelL.transform.position);
      if (groundedR)
      rigidbody.AddForceAtPosition(WheelR.transform.up * antiRollForce,
      WheelR.transform.position);
      }

      Post was edited 4 times, last by “Umut Anubiss” ().

      Yanlıs hatırlamıyorsam " public var COM : Transform; " bu senin arabanın merkez noktası oluyordu. Yani arabanın merkez noktasını buna atıyodun.
      Modelin içinde böyle birşey yok ise boş bir obje oluştur. Bu objeyi arabanın içine at. Objeyi arabanın x y ve z ekseninde tam ortasına gelicek şekilde konumla.
      Sonra COM'a bu boş objeyi göstermey bi dene.
      Baktın bi değişiklik var objenin yönünü değiştirerek düzgün noktayı bulma dene.
      kardeş senin gönderdigin linkte hazır proje var araba felan hepsi kendinden yapılı. bnm istedigim sadece araba fizik kontrolü scripti. bnm yaptıgım projeme ekliyecegim yada baska birşey iiçin gönderdiysen yardım edermsn ?

      Ayrıca Her konu sorunu çözümlenmiş 1 haftadır konuma yardımcı olan yok 1 kaç arkadas dısında bu konuya 20 kişiden 1 isi yorum yapıyor yardım edicek kimse yokmu bu sitede sadece arabamın devrilme sorunu için yardm istedim dönerken takla atıyor sorun bu.
      @Umut Anubiss "bnm istedigim sadece araba fizik kontrolü scripti." demişsin. Arkadaşda yukarıda sana proje linki vermiş. Projeyi indirip baktıysan orada sadece arabaların olmadığını ARABA KONTROL SCRİPTİ'ninde olduğu görmüşsündür. Bu scripti al ve kendi projene at. Bu kadar.
      He eğerki peki bu scripti projeye attım burda bana tanımlamam gereken bir kac şeyi istiyor nası yapıcam dersen sen araba projeni bekletip unity'i öğrenmeye bak.

      Umut Anubiss wrote:

      kardeş senin gönderdigin linkte hazır proje var araba felan hepsi kendinden yapılı. bnm istedigim sadece araba fizik kontrolü scripti. bnm yaptıgım projeme ekliyecegim yada baska birşey iiçin gönderdiysen yardım edermsn ?

      Ayrıca Her konu sorunu çözümlenmiş 1 haftadır konuma yardımcı olan yok 1 kaç arkadas dısında bu konuya 20 kişiden 1 isi yorum yapıyor yardım edicek kimse yokmu bu sitede sadece arabamın devrilme sorunu için yardm istedim dönerken takla atıyor sorun bu.

      arkadaşlar yokmu sorunun ne oldugunu bile n yoksa basic car control olan varsa link verebilirmi ?


      demişsin bende link verdim :) @denem214 'ün dediğinide yapabilirsin zaten ücretsiz basit ÖRNEK bir proje
      Arabanın içine küçük bir küp (cube) ekle ve görünmez yap.
      Arabana bağlı bir parça olacak şekilde.

      Sonra Araba Scriptinin üstkısmına biryere bunu ekle

      C#

      Source Code

      1. public GameObject COM;


      Javascript

      Source Code

      1. var COM:GameObject;


      Sonra bu COM değerine eklediğin kübü ata.

      Araba scriptinde Start() kısmının içine bunu ekle

      Source Code

      1. rigidbody.centerOfMass = COM.transform.localPosition;




      Tek yapman gereken eklediğin küpü arabanın ortasında ve yere değecek kadar yakın olsun.
      Dikkat: Küp içinde Collider olmayacak. Transform componentinden başka hiçbir şey olmasın.

      yada hiç küple uğraşmadan araba scriptine Start() kısmına:

      C#

      Source Code

      1. rigidbody.centerOfMass = new Vector3(0, -2, 0);


      Javascript

      Source Code

      1. rigidbody.centerOfMass = Vector3 (0, -2, 0);

      Bu sadece merkezi noktayı yukarından aşağıya 2 birim indiriyor.
      Bu değer arabanızın boyutuna göre çok az yada çok fazla olabilir. Bu nedenle küp ile daha kolay ayarlanıyor görsel olduğundan.


      rigidbody.centerOfMass ile arabanın merkezi noktasını belirliyorsunuz ve böylece araba devrilmiyor.


      Her arabanın modeline göre merkezi noktası farklı ve sizin rigidbody mass olarak verdiğiniz değere görede değişir.
      Ayrıca arabanın başka parçalarındada rigidbody varsa ve onun değeride çok önemli.
      Kamyon yaptıysanız ve arkasında rigidbody nesneleri taşıyorsa onların değeride çok önemli ama sadece 1 tane rigidbody varsa o zaman ayarlamak çok kolay.


      Yukarıdaki resimde gizli küp ile Arabanın merkezi noktasını ayarlamayı görebilirsiniz.
      Arabanın maksimum hızına göre merkezi nokta yere daha yakın olmalı.
      Böylece Unity 3D ile yaptığınız araba oyununda arabanız takla açıp devrilmeyecek.

      WheelCollider Friction ayarlarıda devrilmeyi önler.

      Bu Problemleri ilk başladığımda bende çok yaşadım ve çok zaman harcadım araştırmak için.
      Umarım faydalı olur.
      Cean cok tesekkur ederim. Paylasimin icin biz yeni baslayanlar icin n bir video hazirlaya bilir misiniz ? Yazili sekilde cok kafam karisti acikcasi sirf bu araba devrilmesi yada ucmasi yuzunden kac defa oyun yapmayi biraktim. Bunun icin bir video yaparsaniz cok yararli olacagini umuyorum tekrar cok tesekkurler