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.
0 Yorumlar