Unity 3D ile İlgili Örnekler (klavye kontrol kodu, mouse ile kamera hareket kodu)

Tem 26, 2025 - 23:21
Tem 26, 2025 - 23:26
 0  9
Unity 3D ile İlgili Örnekler (klavye kontrol kodu, mouse ile kamera hareket kodu)

Bu örnek kapsamında Assets Store (Window->Assets Store/CTRL+9) Character Pack indirilmiştir. Assets içerisindeki karakteri sahneye atabilmek için Project klasörünün altındaki Assets klasöründeki yolu takip ederek karakteri sahneye yerleştiniz.  

Hazır animasyonlar (Koşma, yürüme, zıplama vb.) içeren bu pakette her bir karakterin animatorü bulunmaktadır. Bunlara herhangi bir fonksiyon eklenmedikçe (koşma, yürüme vb.) karakterlerde hareket gözlemlenmeyecektir. Karakterlere fonksiyon eklemek için;

 

  1. Assets klasörünün altına yeni bir klasör açıyoruz.
  2. Bu klasörün içinde sağ tık Create->Animator Controller eklenir.
  3. Eklenen controller’a çift tıklanarak aşağıdaki ekran açılır (Animator). 
  4. Base Layer herhangi bir yere sağ tıklanarak Create State-> Empty ile yeni bir state oluşturulur.
  5. Inspector panelinden bu statenin adı değiştirilir ve Motion kısmına tıklanarak karaktere fonksiyon tanımlanır. 
  1. Oluşturulan Animasyon Controllerı karakterde tanımlamak için sahne elamanlarının yer aldığı Hierarchy panelinde karakterin ismine tıklayarak özelliklerine yani Inspector paneli açılır. Burada Animator kısmında 2. Adımda oluşturulan Animator Controller eklenir. 

Karaktere farklı fonksiyonlar eklemek için 4. adımda itibaren işlemler tekrarlanır. Daha önce eklenmiş olan state sağ tıklanıp Make transition eklenir.

 Not: Unity 3D’de oyun tasarlarken C# kullanılır. Bu nedenle metot oluşturma (veri çekme, veri gönderme), değişken tanımlama vb. işlemleri https://www.w3schools.com/cs/  verilen linkten çalışınız. 

Kameranın hareketini mause ile değiştiren kod:

using System.Collections; using System.Collections.Generic; using UnityEngine;

 

public class kamera : MonoBehaviour

{

    public GameObject camera;     public float mouse_sensivity;     public float XmouseRotation;     public float YmouseRotation;     public GameObject obje;

    void Start()

    { }

    void Update()

    {

        XmouseRotation = Mathf.Clamp(XmouseRotation, -90, 90);

        XmouseRotation -= Input.GetAxis("Mouse Y") * mouse_sensivity * Time.deltaTime;         YmouseRotation += Input.GetAxis("Mouse X") * mouse_sensivity * Time.deltaTime;         camera.transform.rotation = Quaternion.Euler(XmouseRotation, YmouseRotation, 0);         obje.transform.rotation = Quaternion.Euler(0, YmouseRotation, 0);

    } }

Karakteri hareket ettiren kod:

using System.Collections; using System.Collections.Generic; using UnityEngine;

public class obje_hareket : MonoBehaviour

{

    public GameObject obje;     public float speed;     public float jump_power;     private Rigidbody yer_cekimi;     public bool onGround;

    void Start()

    {

        yer_cekimi = obje.GetComponent();         onGround = true;

    }

    void Update()

    {

        if (Input.GetKey(KeyCode.W))

        {

            obje.transform.Translate(0, 0, Time.deltaTime * speed);}         if (Input.GetKey(KeyCode.S))

        {

            obje.transform.Translate(0, 0, Time.deltaTime * -speed); }         if (Input.GetKey(KeyCode.A))

        {

            obje.transform.Translate(Time.deltaTime * -speed, 0, 0); }         if (Input.GetKey(KeyCode.D))

        {

            obje.transform.Translate(Time.deltaTime * speed, 0, 0); }

 

        if (Input.GetKey(KeyCode.Space) && onGround == true)

        {

            yer_cekimi.velocity = new Vector3(0f, jump_power, 0f);                    onGround = false;}}     public void OnCollisionEnter(Collision obje_col)

    {

              if (obje_col.collider.tag == "zemin")  {             onGround = true;}         else

        { onGround = false;

        }

    }}            onGround = false;}  }}

Tepkiniz Nedir?

Beğen Beğen 0
Beğenmiyorum Beğenmiyorum 0
Aşk Aşk 0
Komik Komik 0
Öfkeli Öfkeli 0
Üzgün Üzgün 0
Vay Vay 0
Alp G Ben Alper Güler. Bilgisayar mühendisliği altyapısına sahip, yapay zekâya derin bir ilgiyle yaklaşan bir yazar ve düşünce üreticisiyim. MyBlog.tc’nin kurucusu ve yazarı olarak, teknolojiyle hayatı buluşturan içerikler üretiyor; dijital dünyanın, sistemlerin ve bilimin daha anlaşılır ve bütüncül kavranması için yazıyorum. Kurgusal alanda da üretmeye devam ediyorum. İlk romanım “Madde 32”, polisiye türüyle sistem eleştirisini birleştiren ve geçmişin izlerini bugüne taşıyan bir anlatı. Yeni romanlar ve senaryolar üzerinde çalışıyor, anlatı gücümü derinleştirmeyi sürdürüyorum. Yazmak, benim için sadece bir ifade biçimi değil; çok yönlü düşünmenin, sezginin ve sorgulamanın pratiği. İlhamı beklemem — çünkü her zaman, her an içimdedir. Gelecekteki hedefim; sadece uzmanlık alanımda değil, bilimin tüm yönlerinde söz sahibi olabilecek, parçaları birleştiren bir zihin inşa etmek.