Advertisement

reklam yok knk

Unity araba kodu

 






Bu altaki koda araba haraketi ve ısık sıstemlerı mevcuttur

aşağıdaki örnek kod, bir araba modeli üzerinde gerçekçi fizikler ve farklı özellikler kullanarak çalışan bir Unity projesi için C# kullanarak bir script yazılmıştır:


using UnityEngine;

using UnityEngine.UI;


public class CarController : MonoBehaviour

{

    public float maxSpeed = 50f;

    public float acceleration = 5f;

    public float brakePower = 10f;

    public float turnSpeed = 50f;

    public float gravity = 10f;


    public GameObject[] headlights;


    public Text speedText;


    private float horizontalInput;

    private float verticalInput;


    private Rigidbody rb;


    private bool isBraking = false;


    private void Start()

    {

        rb = GetComponent<Rigidbody>();

    }


    private void Update()

    {

        horizontalInput = Input.GetAxis("Horizontal");

        verticalInput = Input.GetAxis("Vertical");


        // Fren yapma kontrolü

        if (Input.GetKey(KeyCode.Space))

        {

            isBraking = true;

        }

        else

        {

            isBraking = false;

        }


        // Far kontrolü

        if (Input.GetKeyDown(KeyCode.F))

        {

            foreach (GameObject headlight in headlights)

            {

                headlight.SetActive(!headlight.activeSelf);

            }

        }


        // Stop lambaları kontrolü

        if (Input.GetKeyDown(KeyCode.Space))

        {

            foreach (GameObject brakeLight in GameObject.FindGameObjectsWithTag("BrakeLight"))

            {

                brakeLight.GetComponent<Renderer>().material.EnableKeyword("_EMISSION");

            }

        }

        else if (Input.GetKeyUp(KeyCode.Space))

        {

            foreach (GameObject brakeLight in GameObject.FindGameObjectsWithTag("BrakeLight"))

            {

                brakeLight.GetComponent<Renderer>().material.DisableKeyword("_EMISSION");

            }

        }

    }


    private void FixedUpdate()

    {

        // Hız göstergesi güncelleme

        speedText.text = "Speed: " + Mathf.Round(rb.velocity.magnitude * 3.6f) + " km/h";


        // Arabayı ileri veya geri hareket ettir

        Vector3 forwardMovement = transform.forward * verticalInput * acceleration * Time.deltaTime;

        if (isBraking)

        {

            rb.AddForce(-rb.velocity.normalized * brakePower, ForceMode.Acceleration);

        }

        else if (rb.velocity.magnitude < maxSpeed)

        {

            rb.AddForce(forwardMovement);

        }


        // Arabayı döndür

        float turn = horizontalInput * turnSpeed * Time.deltaTime;

        Quaternion turnRotation = Quaternion.Euler(0f, turn, 0f);

        rb.MoveRotation(rb.rotation * turnRotation);


        // Arabanın yerçekimine bağlı olarak yere tutunması

        Vector3 gravityForce = Vector3.down * gravity * rb.mass;

        rb.AddForce(gravityForce);

    }

}

Bu örnekte, CarController adında bir script yazdık ve bu script, arabanın kontrol edilmesini sağlamak için Rigidbody bileşenine sahip bir nesneye eklenir.


Script, arabanın maksimum hızını, ivme, fren gücü, dönüş hızı ve yerçekimi gibi parametreleri ayarlamak için değişkenler içerir.


Update() fonksiyonu içinde, klavyeden veya joystick'ten gelen yatay ve dikey girişler horizontalInput ve verticalInput değiş



devamı

kenlere atanır. Ardından, klavyeden Space tuşuna basılıp basılmadığını kontrol ederek fren yapma durumunu belirleriz.


Ayrıca, F tuşuna basarak farların açılıp kapanmasını sağlayan bir kod ve boşluk tuşuna basarak arka stop lambalarının yanıp sönen bir kod ekledik.


FixedUpdate() fonksiyonu içinde, arabanın hareketini yönetmek için gerekli kodlar yer alır. Örneğin, arabanın ileri veya geri hareket ettirilmesi, dönmesi ve yerçekimine bağlı olarak yere tutunması.


Son olarak, arabanın hızını hesaplamak ve hız göstergesinde göstermek için speedText değişkeni kullanılmıştır.


Bu örnek kod, ayrıca headlights adında bir dizi de içerir. Bu dizi, farların arabanın ön kısmında bulunan ışık kaynaklarına bağlı olduğunu ve farların açılması veya kapanması durumunda bu ışık kaynaklarının etkinleştirilip devre dışı bırakılması gerektiğini belirtmek için kullanılır.


Benzer şekilde, arka stop lambaları da BrakeLight etiketiyle etiketlenmiş nesneler olarak belirlenmiştir. Bu nesnelerin Renderer bileşenleri kullanılarak, boşluğa basıldığında stop lambalarının yanıp söndürülmesi sağlanır.


Bu örnek kod, gerçekçi bir araba modeli üzerinde fizikleri simüle etmek ve arabanın farklı özelliklerini kontrol etmek için bir başlangıç noktası sağlar. Ancak, her proje farklı gereksinimlerle birlikte gelir, bu nedenle bu örnek kodu kendi ihtiyaçlarınıza göre özelleştirmeniz gerekebilir.

Yorum Gönder

0 Yorumlar