Unity kamera çevirme ve karakter hareketleri

Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Boş
Süper Üye
Katılım
11 Nis 2018
Mesajlar
725
Tepki puanı
258
Ödüller
6
8 HİZMET YILI
Arkadaşlar canım sıkıldı bende unity ile ilgilenenler için kod paylaşıyım dedim

kamera çevirme
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class kamera : MonoBehaviour
{
    //kamera objemmizi tanımladık
    public GameObject camera;
    //mouse'umuza hassasiyet ekliyoruz cs oynayanlar bilir
    public float mouse_sensivity;
    //mouse'umuzun kordinatlarını hesaplıyoruz
    public float XmouseRotation;
    public float YmouseRotation;
    //kameramızın kafasını çevirince karakterimizinde dönmesini istiyorum bu yüzden obje tanımladık
    public GameObject obje;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        //x mouse rotation'ına sınır ekliyoruz eğer sınıf eklemezsek karakterimiz kafasını 360 derece çevirebilir
        XmouseRotation = Mathf.Clamp(XmouseRotation, -90, 90);
        
        XmouseRotation -= Input.GetAxis("Mouse Y") * mouse_sensivity * Time.deltaTime;
        YmouseRotation += Input.GetAxis("Mouse X") * mouse_sensivity * Time.deltaTime;
        //biz mouse'u çevirdiğimizde ben kameranında dönemsini istiyorum bunun için bu kodu giriyoruz
        camera.transform.rotation = Quaternion.Euler(XmouseRotation, YmouseRotation, 0);
        //ben kamera döndüğünde karakterimizinde dönmesini istiyorum bunun için bu kodu giriyoruz
        //ancak sadece y yönünde dönmesini istiyorum çünkü ben sadece etrafa bakmak için dönemsini istiyorum karaktermizin ters dönmesini değil
        obje.transform.rotation = Quaternion.Euler(0, YmouseRotation, 0);
    }
}

karakter hareket
C#:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class obje_hareket : MonoBehaviour
{
    //kod kısmında obje adında yeni bir gameobject oluşturuyoruz
    public GameObject obje;
    //objemize float değişkeninde bir hız tanımladık
    public float speed;
    //objemize float değişkeninde bir zıplama gücü ekledik
    public float jump_power;
    //kod kısmında rigidbody oluşturduk ancak başına private koyduğumuz için  buna unity den erişemiyeceğiz
    private Rigidbody yer_cekimi;
    //burda karekterimizin yere değip değmediğini algıladık çünkü karaktermiz havadeyken bir daha zıplayabilecek
    public bool onGround;

    // Start is called before the first frame update
    void Start()
    {
        //yer çekimi = objenin içindeki yer çekimine eşitledik
        yer_cekimi = obje.GetComponent<Rigidbody>();
        //başlangıçta onGround true olsun dedik
        onGround = true;
    }

    // Update is called once per frame
    void Update()
    {
        //eğer(if) klavyeden w tuşuna basılırsa(Input.GetKey(KeyCode.W)) SÜSLÜ PARENTEZİN İÇİNDEKİLER OLUCAK
        //BEN NE İSTİYORUM W TUŞUNA BASILIRSA İLERİYE GİTSİN O YÜZDEN BU KODU YAZALIM
        if (Input.GetKey(KeyCode.W))
        {
            //z ileri geri - y yukarı aşşağı - x sağ sol
            //obje z yönünde zamana bağlı kalarak speed hızıyla gitsin
            obje.transform.Translate(0, 0, Time.deltaTime * speed);
        }

        //şimdi s ye basılırsada bunun tam tersi olmasını istiyorum hemen bunuda yapalım

        //eğer(if) klavyeden s tuşuna basılırsa(Input.GetKey(KeyCode.S)) SÜSLÜ PARENTEZİN İÇİNDEKİLER OLUCAK
        if (Input.GetKey(KeyCode.S))
        {
            //z ileri geri - y yukarı aşşağı - x sağ sol
            //obje -z yönünde zamana bağlı kalarak speed hızıyla gitsin
            obje.transform.Translate(0, 0, Time.deltaTime * -speed);
        }

        //eğer(if) klavyeden a tuşuna basılırsa(Input.GetKey(KeyCode.A)) SÜSLÜ PARENTEZİN İÇİNDEKİLER OLUCAK
        if (Input.GetKey(KeyCode.A))
        {
            //z ileri geri - y yukarı aşşağı - x sağ sol
            //obje -x yönünde zamana bağlı kalarak speed hızıyla gitsin
            obje.transform.Translate(Time.deltaTime * -speed, 0, 0);
        }

        //eğer(if) klavyeden d tuşuna basılırsa(Input.GetKey(KeyCode.D)) SÜSLÜ PARENTEZİN İÇİNDEKİLER OLUCAK
        if (Input.GetKey(KeyCode.D))
        {
            //z ileri geri - y yukarı aşşağı - x sağ sol
            //obje x yönünde zamana bağlı kalarak speed hızıyla gitsin
            obje.transform.Translate(Time.deltaTime * speed, 0, 0);
        }

        //eğer(if) klavyeden space tuşuna basılırsa(Input.GetKey(KeyCode.SPACE)) SÜSLÜ PARENTEZİN İÇİNDEKİLER OLUCAK
        //if onGround doğruysa yani yere değiyorsa
        if (Input.GetKey(KeyCode.Space) && onGround == true)
        {
            //zıplasın
            yer_cekimi.velocity = new Vector3(0f, jump_power, 0f);
            //onground yani yere değmesi false olsun
            onGround = false;
        }
        
    }
    public void OnCollisionEnter(Collision obje_col)
    {
        //eğer objemiz zemin tagı olan bir objeye değiyorsa onGround true olsun
        if (obje_col.collider.tag == "zemin")
        {
            onGround = true;
        }
        //eğer objemiz zemin tagı olan bir objeye değmiyorsa onGround false olsun
        else
        {
            onGround = false;
        }
    }
}

web sitemden ayrıntılı bakmak isteyenler için
Bağlantıları görmek için lütfen Giriş Yap
 
Üye
Katılım
5 Nis 2019
Mesajlar
9
Tepki puanı
1
Ödüller
4
Yaş
27
7 HİZMET YILI
eyw aga lazımdı bayağı sayende kurtuldum
 
Ultra Üye
Katılım
18 Nis 2016
Mesajlar
2,279
Çözümler
6
Tepki puanı
879
Ödüller
12
10 HİZMET YILI
oyun yapacaklar için yararlı :gelisirabii:
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Üst