Şimdi Ara

Unity 3d OnTriggerExit'ten Sonra Position Çalışmıyor

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
2 Misafir (1 Mobil) - 1 Masaüstü1 Mobil
5 sn
4
Cevap
0
Favori
645
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar.Bir sorunu mvar ve bir türlü işin içinden çıkamadım.Normalde İLK Void UPDATE'deki tek olunca scripti eklediğim nesneyi(uzay gemisini) hareket ettiriyor ve sürekli o yönde gidiyor.OnTriggerStay'de ise uzay gemisindeki Collider bir nesnenin içinde kaldığında(meshini kaldırdığım bi küp) duration daki zamanı da kullanarak rotatei değiştiriyor. OnTriggerExit te ise uzay gemisindeki Collider meshsiz küpten çıktığında Tıpki void update deki gibi hareket etsin istiyorum (Yani şu oldu bakın; Uzay gemisi kalkıyor,kalktıktan bir süre sonra rotatei değiştiriyor ve bu sırada halen kalkıyor.Sonra ise kübün alanından çıkında hem kalkması hem de rotatei duracak ve hızlanıp gidecek) Ama yapamadım. On Trigger Exit ' e Vector3 esrefa = new Vector3(20.5f,0,0);
    transform.position += esrefa;
    Bi javascript yazdım fakat sadece o noktaya IŞINLIYOR.Hareket etmiyor.Fakat aynı kod Update'de işe yarıyor.Javascript le yazmayı denedim bi kısmı oldu ama C# bilgidğim için bu daha rahat geldi.
    Script burda;

     
    using UnityEngine;
    using System.Collections;

    public class Pozisyon : MonoBehaviour {

    // Use this for initialization
    void Start () {

    }
    public float duration = 10.0f;

    // Update is called once per frame
    void Update () {
    Vector3 esref = new Vector3(0,0.03f,0);
    transform.position += esref;

    }
    void OnTriggerStay(Collider other) {
    transform.Rotate (Vector3.up, 2000.0f * Mathf.Deg2Rad / duration * Time.deltaTime);
    }
    void OnTriggerExit(Collider other) {
    Vector3 esrefa = new Vector3(20.5f,0,0);
    transform.position += esrefa;
    }
    }


    Anlayamayan olursa SS atabilirim.Teşekkürler...



    < Bu mesaj bu kişi tarafından değiştirildi esrefbackstone -- 14 Mayıs 2014; 12:37:49 >







  • OnTriggerExit çarpışmadan çıktıntan sonra sadece bir kere çalışır ayrıca unity'de vektör bir zaman içinde hareket ettirmek istiyorsan Coroutine ve Vector3.Lerp fonksiyonlarını kullanmalısın.

    http://unity3d.com/learn/tutorials/modules/intermediate/scripting/coroutines buradaki videoyu izlersen daha kolay anlayabilirsin.

    Bide Vector3.Lerp Matematikdeki limit konusu ile ilişkili bu yüzden istenilen noktaya yaklaşır fakat hiçbir zaman aynı olmaz



    < Bu mesaj bu kişi tarafından değiştirildi bersgurs -- 14 Mayıs 2014; 16:35:20 >
  • bersgurs kullanıcısına yanıt
    Teşekkür ederim hcoa mvideo açılıyor izlerim birazdan da o halde dediğini yöntemden ziyade şöyle bir şey yapamazmıyız. Aynı kdou Void Update'e yazınca sürekli yapıyor.O halde ben void update'e if ontriggerexit{kod} olmaz mı?Yani OnTriggerExit'i void update'in içine nasıl gömebilirim?(Sürekli yapması için)
  • Yapamazsız

    IEnumerator Coroutine(parametreler)
    {
    Hareket Kodu Vector3.Lerp Kullanarak

    }

    OnTriggerExit()
    {
    StartCoroutine(Coroutine());
    }

    şeklinde yazmanız gerekiyor.
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.