2016-04-13 10 views
0

Bir işaretçiyi crosshair'i kontrol etmek için kullanıldığı Unity'de bir hedefleme sistemi oluşturmaya çalışıyorum. Oyun Oculus ile oynanıyor ve Leap Motion Oculus kulaklığına takılı.LeapMotion + Unity: Bir nesnenin açısını temel alarak bir 3B dünyasında bir nesneyi hareket ettirme

İşaret parmağı açısına göre artı işaretinin konumunu hesaplamaya çalıştım ve belirli bir mesafeye göre bir ışın çiziyorum.

İşte
Vector3 targetPoint = direction * direction; 

denedim budur:

void Start() { 
    crossHair = GameObject.Find("Crosshair Component"); 
    myCamera = GameObject.Find("CenterEyeAnchor"); 
    target = crossHair.transform; 
    controller = new Controller(); 
    indexFinger = new Finger(); 

    void Update() { 

    crossHair.transform.position = myCamera.transform.position; 
    frame = controller.Frame(); 
    List<Hand> handList = new List<Hand>(); 
    for (int h = 0; h < frame.Hands.Count; h++) 
    { 
     Hand leapHand = frame.Hands[h]; 
     handList.Add(leapHand); 
    } 

    if (handList != null && frame.Hands.Count > 0) { 
     indexFinger = frame.Hands[0].Fingers[(int)Finger.FingerType.TYPE_INDEX]; 
     if (indexFinger.IsExtended) 
     { 
      Vector3 fingerTipPos = indexFinger.TipPosition.ToUnityScaled(); 

      Vector3 originAngle = indexFinger.TipPosition.ToUnityScaled(); 
      Vector3 targetAngle = crossHair.transform.position; 
      float distance = 1; 

      Vector3 direction = indexFinger.Direction.ToUnityScaled(); 
      Ray rayToTest = new Ray(originAngle, targetAngle); 
      Vector3 targetPoint = rayToTest.GetPoint(distance); 

      //Problem is here. How should these targetPoint values be used to calculate correct position for the crosshair? 
      crossHair.transform.position = new Vector3(crossHair.transform.position.x + (targetPoint.x), y, 
                crossHair.transform.position.z + (targetPoint.z)); 
     } 


    } 
} 

}

ile ben de sadece işaret parmağı yönüne göre ve bunun gibi mesafeyi verilen Artı konumunu hesaplayarak denedi Bu gibi hesaplamalar ben x ve z değerlerini değiştirerek crosshair'i yatay düzeye göre hareket ettirebildim ama y-ekseni en büyük problem gibi görünüyor. Y ekseni her zaman çok düşük değerler alıyor gibi görünüyor. Crosshair öğesi, Unity'deki CenterEyeAnchor kamera nesnesi için bir alt öğe olarak yerleştirilir.

Sorular şu şekildedir: Hedef nokta pozisyonunu hesaplamaya çalıştığım gibi doğru mu? İşaret parmağı hareketine göre davranmasını sağlamak için, yeni hedef nokta değerine göre artı işaretli pozisyon için ne tür hesaplamalar yapmak zorundayım? Değerler için ölçeklendirme faktörleri?

+0

ben çok oculus aşina ve sıçrama aşina değilim, ancak nesnelerin kurulumunu gösteren ekran görüntüsü çeşit içerir sürece yardımcı olmak için neredeyse imkansız. Şu anda "herhangi bir şeyin nerede olduğunu" bilmek kesinlikle imkansız. – Fattie

cevap