İçeriğe geç
ShiftDelete.Net
Haber ara/ SDN'ye SorGiriş
Haber Akışı SDNTV İnceleme Forum Yapay Zeka Akıllı Telefon Elektrikli Otomobil Oyun ShiftDelete.Net Global Teknoloji Haberleri Mobil Otomobil Donanım Savunma Bilim Sosyal Medya İnternet Giyilebilir Teknoloji Rehber Ürünler Son dakika Yazarlar
  1. Ana sayfa
  2. Topluluk
  3. Programlama
  4. Mobil Programlama
Mobil Programlama

Unity 3d Hareket Sorunu

ImHoly10.03.20170 cevap2.427 görüntüleme
2016'den beri5 mesaj
#1
Merhabalar, ben android 2d bir oyun yazıyorum hatta bitti bile denebilir sadece tek bir sıkıntım kaldı, oyun karakterim ekrana dokundukça uçuyor telefonu sağa sola çevirince sağa sola gidiyor ama ekranın dışına çıkıyor bunun için bir çok yol denedim ama bir türlü beceremedim.

Collider ekledim olmadı rigidbody ekledim collider ile birlikte boş bir gameobje ye tüm ayarlarıyla tek tek oynadım araştırmalar yaptım olmadı.

karakterin gidebileceği sınırları belirleyerek if komutu yazdım birçok kombinasyon denedim fakat bu sefer de ya hiç hareket etmedi yada belirlediğim sınırlara gelince takıldı hareket etmedi yardımcı olur musunuz hareket kodlarımı paylaşıyorum aşağıda;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Audio;

public class CharacterFlying : MonoBehaviour {

    public float gravity;
    Vector3 bird_move = Vector3.zero;
    public Vector3 flyspeed;
    bool boolflapping;
    public float maxspeed;
    public static float speedforward;
    public float left = -2.38f;
    public float right = 2.43f;
    public float CharSpeed = 0.040f;
    public AudioSource jump;
   

    void Start()
    {

    }

    void FixedUpdate()
    {

        if (!UserSettings.GameStart)
        {
            if (!UserSettings.GameOver)
            {
                if (!UserSettings.Pause)
                {
                    bird_move += new Vector3(0, /*-gravity*/-0.18f, 0);
                    if (boolflapping == true)
                    {
                        boolflapping = false;
                        bird_move += flyspeed;
                    }
                    if (bird_move.y > maxspeed)
                    {
                        bird_move = new Vector3(bird_move.x, maxspeed, bird_move.z);
                    }
                    bird_move = new Vector3(speedforward, bird_move.y, bird_move.z);
                    /*float rot;
                    if (transform.position.y < 0)
                    {
                        rot = Mathf.Lerp(0, 0, -bird_move.y / maxspeed);
                        transform.rotation = Quaternion.Euler(0, 0, rot);
                    }*/
                    transform.position += bird_move * Time.deltaTime;
                }
            }
        }


    }

    void Update()
    {
        if (transform.position.x > left && transform.position.x < right)
        {
            transform.Translate(Input.acceleration.x, 0, 0); //Denenecek
        }
        if (Input.GetKeyDown(KeyCode.Space))
        {
            boolflapping = true;
            jump.Play();

        }
        if (Input.touchCount > 0)
        {
            boolflapping = true;
            jump.Play();
        }

        /*if (Input.acceleration.x > 0.25)
        {  //sağ tarafa döndürürken yapılacak işlem
            transform.Rotate(5, 0, 0); // sağ tarafa (rotasyon.x'e) 5 ekle
        }
        if (Input.acceleration.x < -0.25)
        { //sol tarafa döndürürken yapılacak işlem
            transform.Rotate(5, 0, 0); // sol tarafa (rotasyon.x'e) 5 eksilt
        }*/

        /*if (Input.acceleration.x > 0.25)
        {

            if (transform.position.x < Screen.width * 0.3f)
            {
                if (transform.position.x > left)
                {
                    transform.Translate(Vector3.right * CharSpeed);
                }
            }
        }else if (Input.acceleration.x < -0.25)
        {
            if (transform.position.x > Screen.width * 0.7f)
            {
                if (transform.position.x < right)
                {
                    transform.Translate(Vector3.left * CharSpeed);
                }
            }
        }*/


           /* if(Input.acceleration.x > 0.25)
            {
                transform.Translate(Vector3.left * CharSpeed);
            }
   
            if (Input.acceleration.x > -0.25)
            {
                transform.Translate(Vector3.right * CharSpeed);
            }*/

    }
}

Cevabını yaz

Cevap yazmak için giriş yap ya da üye ol. Eski forum kullanıcı adın ve parolanla girebilirsin.