Unity 3D ile Karakter Hareket ve Zıplama Kodları | Unity 3d Dersleri

Herkese selamlar. Bu içerikte sizlere Unity 3d ile bir karakteri ya da her hangi bir nesneyi nasıl hareket ettirebileceğinizden bahsedeceğim. Öncelikle bu uygulama temel düzeyde bir anlatımı kapsadığı için karakterimiz bir kapsülden ve platformumuzda küplerden oluşmaktadır. Aşağıdaki görseldeki gibi basit örnek bir platform ve karakter oluşturabilirsiniz. Karakterinize Rigidbody Component’ini(bileşenini) eklemeyi unutmayınız.

Örnek Platform ve Karakter

Platform ve karakterinizi oluşturduktan sonra aşağıdaki verdiğim kodları “oyuncu” adlı bir C# script dosyası oluşturarak oluşturduğunuz kapsüle ekleyin. (üzerine sürükleyip bırakın ya da Add Component kısmından script oluşturun.)

Daha sonra platform için kullanılan küplerin her birine de “platform” etiketi vermeyi unutmayın.

Add Tag kısmından platform etiketi oluşturunuz. Her bir engel veya platform ögelerine platform etiketini veriniz.

Ayrıca karakteri (kapsülü) hareket ettirirken Rigidbody Component’inden dolayı güç uygulanacağı için herhangi bir çarpışmadan dolayı sağa ve sola düşmemesi için aşağıdaki görseldeki ayarları yapınız. RigidBody Component > Constraints > Freeze Rotation > X,Y,Z üç ekseni de dondurunuz. Bu sayede sağa sola düşmeyecektir.

Kapsüle eklediğiniz Rigidbody’nin ayarlarını bu şekilde yapınız.

ÖRNEK KODLAR

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

public class oyuncuHareket : MonoBehaviour
{
    //DEĞİŞKENLER
    public GameObject oyuncu;
    Rigidbody rb;
    public float Hiz = 5.0f;
    public float ziplamaGucu= 10.0f;
    bool yerdeMi; //kontrolcu Değişken
    void Start()
    {
        //Rigidbody Bileşenini tanımlama ve Değişkene Atama
        rb = oyuncu.GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update()
    {
        //W-A-S-D ya Yön tuşlarına basılırsa yatay adlı değişkene eksene göre değer verir.
        float yatay = Input.GetAxis("Horizontal") * Time.deltaTime * Hiz;

        oyuncu.transform.Translate(new Vector3(yatay, 0, 0)); // Y eksenini değiştir.

        if(Input.GetKeyDown(KeyCode.Space)) //Eğer Boşluk tuşuna basılırsa.
		{
            if (yerdeMi) //yerDemi değişkeni True ise içerisini gerçekleştir.
            {
                
                rb.AddForce(new Vector3(0, ziplamaGucu, 0), ForceMode.Impulse);
            }
		}

    }
	private void OnCollisionStay(Collision collision) //Eğer sürekli platforma değiyorsa
	{
		if(collision.gameObject.tag == "platform") //eğer platform etiketli nesneye değerse
		{
            yerdeMi = true; //yerDemi değişkeninin değerini true(doğru) yap.

		}
		
	}

   
    
    private void OnCollisionExit(Collision collision) // Eğer platforma değme işlemi bittiyse.
    {
        if (collision.gameObject.tag == "platform") //platform etiketli nesnelere değmiyorsa
        {
            yerdeMi = false; //yerdeMi değişkeninin değerini false(yanlış) yap.
            
        }

    }
    
}

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

error: Content is protected !!