Unity'de yapılan oyunda araç yere değdiğinde zıplıyor

yobabez

Decapat
Katılım
30 Kasım 2022
Mesajlar
25
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar selam oyun yapmaya çalışıyordum bir videodaki aynı şeyleri yaptım fakat araç yere değer değmez zıplıyor ve etrafında taklalar atıyor en son dünyadan düşüyor kaynak olarak videoyu bırakıyorum aşağıya.

Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.
 

Muhtemelen rigidbodyde bir sıkıntı vardır.
 
Yazdığın scripti görmeden nasıl yorum yapmamızı bekliyorsun?
videoda var ondan kaynak ekledim istersen atayım

using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class CarController : MonoBehaviour { private const string HORIZONTAL = "Horizontal"; private const string VERTICAL = "Vertical"; private float horizontalInput; private float verticalInput; private float currentSteerAngle; private float currentbreakForce; private bool isBreaking; [SerializeField] private float motorForce; [SerializeField] private float breakForce; [SerializeField] private float maxSteerAngle; [SerializeField] private WheelCollider frontLeftWheelCollider; [SerializeField] private WheelCollider frontRightWheelCollider; [SerializeField] private WheelCollider rearLeftWheelCollider; [SerializeField] private WheelCollider rearRightWheelCollider; [SerializeField] private Transform frontLeftWheelTransform; [SerializeField] private Transform frontRightWheelTransform; [SerializeField] private Transform rearLeftWheelTransform; [SerializeField] private Transform rearRightWheelTransform; private void FixedUpdate() { GetInput(); HandleMotor(); HandleSteering(); UpdateWheels(); // frontLeftWheelCollider.motorTorque = 0.17f * motorForce; } private void GetInput() { horizontalInput = Input.GetAxis(HORIZONTAL); verticalInput = Input.GetAxis(VERTICAL); isBreaking = Input.GetKey(KeyCode.Space); } private void HandleMotor() { frontLeftWheelCollider.motorTorque = verticalInput * motorForce; frontRightWheelCollider.motorTorque = verticalInput * motorForce; currentbreakForce = isBreaking ? breakForce : 0f; ApplyBreaking(); } private void ApplyBreaking() { frontRightWheelCollider.brakeTorque = currentbreakForce; frontLeftWheelCollider.brakeTorque = currentbreakForce; rearLeftWheelCollider.brakeTorque = currentbreakForce; rearRightWheelCollider.brakeTorque = currentbreakForce; } private void HandleSteering() { currentSteerAngle = maxSteerAngle * horizontalInput; frontLeftWheelCollider.steerAngle = currentSteerAngle; frontRightWheelCollider.steerAngle = currentSteerAngle; } private void UpdateWheels() { UpdateSingleWheel(frontLeftWheelCollider, frontLeftWheelTransform); UpdateSingleWheel(frontRightWheelCollider, frontRightWheelTransform); UpdateSingleWheel(rearRightWheelCollider, rearRightWheelTransform); UpdateSingleWheel(rearLeftWheelCollider, rearLeftWheelTransform); } private void UpdateSingleWheel(WheelCollider wheelCollider, Transform wheelTransform) { Vector3 pos; Quaternion rot; wheelCollider.GetWorldPose(out pos, out rot); wheelTransform.rotation = rot; wheelTransform.position = pos; } }
 
Mesajı atarken üstteki kısımda "kod" seçeneği var, ona tıklayıp kullandığın dili seç ve daha sonra mesajını yaz lütfen. Bu haliyle kimse okuyamaz.
 
Mesajı atarken üstteki kısımda "kod" seçeneği var, ona tıklayıp kullandığın dili seç ve daha sonra mesajını yaz lütfen. Bu haliyle kimse okuyamaz.
pardon bilmiyorum fazla
bi saniye

Kod:
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;




public class CarController : MonoBehaviour
{
    private const string HORIZONTAL = "Horizontal";
    private const string VERTICAL = "Vertical";

    private float horizontalInput;
    private float verticalInput;
    private float currentSteerAngle;
    private float currentbreakForce;
    private bool isBreaking;

         [SerializeField] private float motorForce;
         [SerializeField] private float breakForce;
         [SerializeField] private float maxSteerAngle;
 
         [SerializeField] private WheelCollider frontLeftWheelCollider;
         [SerializeField] private WheelCollider frontRightWheelCollider;
         [SerializeField] private WheelCollider rearLeftWheelCollider;
         [SerializeField] private WheelCollider rearRightWheelCollider;

         [SerializeField] private Transform frontLeftWheelTransform;
         [SerializeField] private Transform frontRightWheelTransform;
         [SerializeField] private Transform rearLeftWheelTransform;
         [SerializeField] private Transform rearRightWheelTransform;





     private void FixedUpdate()
     {
         GetInput();
         HandleMotor();
         HandleSteering();
         UpdateWheels();

          // frontLeftWheelCollider.motorTorque = 0.17f * motorForce;
    }

     private void GetInput()
    {
         horizontalInput = Input.GetAxis(HORIZONTAL);
         verticalInput = Input.GetAxis(VERTICAL);
         isBreaking = Input.GetKey(KeyCode.Space);
    }

     private void HandleMotor()
    {
         frontLeftWheelCollider.motorTorque = verticalInput * motorForce;
         frontRightWheelCollider.motorTorque = verticalInput * motorForce;
         currentbreakForce = isBreaking ? breakForce : 0f;
         ApplyBreaking();
    }

     private void ApplyBreaking()
    {
         frontRightWheelCollider.brakeTorque = currentbreakForce;
         frontLeftWheelCollider.brakeTorque = currentbreakForce;
         rearLeftWheelCollider.brakeTorque = currentbreakForce;
         rearRightWheelCollider.brakeTorque = currentbreakForce;
    }

     private void HandleSteering()
    {
         currentSteerAngle = maxSteerAngle * horizontalInput;
         frontLeftWheelCollider.steerAngle = currentSteerAngle;
         frontRightWheelCollider.steerAngle = currentSteerAngle;
    }

     private void UpdateWheels()
    {
         UpdateSingleWheel(frontLeftWheelCollider, frontLeftWheelTransform);
         UpdateSingleWheel(frontRightWheelCollider, frontRightWheelTransform);
         UpdateSingleWheel(rearRightWheelCollider, rearRightWheelTransform);   
         UpdateSingleWheel(rearLeftWheelCollider, rearLeftWheelTransform);
    }

     private void UpdateSingleWheel(WheelCollider wheelCollider, Transform wheelTransform)
    {
         Vector3 pos;
         Quaternion rot;
         wheelCollider.GetWorldPose(out pos, out rot);
         wheelTransform.rotation = rot;
         wheelTransform.position = pos;
    }
    
}
 
Hocam Unity'de "hierarchy" kısmından arabanızı seçip. Oradan ınspector kısmındaki şu işaretlediğim yeri atar mısınız;

 
Rigidbody eklentisi olan nesneleri düzenlemezsen, birbirlerine kuvvet uygular.
 
Bekleyin hocam bayağıdır uğraşıyorum bunalmıştım kapadım açıyorum.

Eki Görüntüle 1775195

Ben bu tarz bir proje yaptığımda. Sorun ağırlıkta çıkmıştı. Ağırlığı arttırıp azaltıp dener misiniz?
Ve bazen constraints kısmının altındaki "freeze rotation" seçeneğindeki tüm tikleri işaretlemek çözüm olabiliyor. Bunları dener misiniz?
 
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…