açı farklılıklardan bir vector3 pozisyon oluşturma

oy
2

Bir sahip oyuncu pozisyonu oyuncu gösteren bir işaretçi, yön görüntülemek , bir mesafe ve yatay ve dikey açı . Ben hesaplamak istediğiniz hedef konumu :

  • yani mesafe uzakta oyuncular pozisyon
  • oyuncuların dışında, bu yönünü görmek olduğunu yatay açı sağa ve dikey açıda yukarıya

Bu oyuncunun etrafında bir alanda bir Hololens-Uygulama UI konumlandırma ilgili. UI, yani 20 derece kadar oyuncu yönü görüntülemek gelen leftand 40 derece arasında olmalıdır.

Düzenleme : Eklenen görüntü netleştirmek için. (Siyah kalın çizginin = uzunluk) yarıçap ve derecesi her iki açıları Oyuncu Poz (| | pY pZ px) dikkate alındığında.

Ben UI Merkezi konumu hesaplamak için nasıl arıyorum (x | y |? Z?).

Burada

Oluştur 27/11/2018 saat 18:09
kaynak kullanıcı
Diğer dillerde...                            


4 cevaplar

oy
2

Sen kullanabilirsiniz Quaternion.Euler Dünya uzayda açıları dayalı bir rotasyonu oluşturmak için ve daha sonra bilinen bir pozisyona ile çarpılarak istenilen sonucu almak.

Yani örnek kullanarak böyle pozisyon bulabiliriz:

float radius, x_rot, y_rot;
Vector3 forwardDirection, playerPos;

Vector3 forwardPosition = playerPos + (forwardDirection * radius);
Vector3 targetPosition = Quaternion.Euler(x_rot, y_rot, 0) * forwardPosition;

Üzerinde doküman kontrol deneyin Quaternion ve Quaternion.AngleAxis daha kullanışlı rotasyon şeyler için.

Cevap 27/11/2018 saat 23:32
kaynak kullanıcı

oy
1
// Set UI in front of player with the same orientation as the player
ui.transform.position = player.transform.position + player.transform.forward * desiredDistance;
ui.transform.rotation = player.transform.rotation;

// turn it to the left on the players up vector around the the player
ui.transform.RotateAround(player.transform.position, player.transform.up, -40);

// Turn it up on the UI's right vector around the player
ui.transform.RotateAround(player.transform.position, ui.transform.right, 20);

, Ayrıca UI çalar yüzleşmek istiyorum varsayarak aksi takdirde bundan sonra başka bir rotasyon belirlemek zorunda.

Gerek kendiniz hesaplamak için, Birlik API zaten (bkz sizin için yapar etrafında döndürün )

Cevap 27/11/2018 saat 21:39
kaynak kullanıcı

oy
0

Bir matematikçi tarafından Cevap:

verilen bilgiler (nesneler arasındaki mesafe x açısı y açısı) Eğer trigonometri kullanımı ile küresel konumunu hesaplamak için:

float x = distance * Mathf.Cos(yAngle) * Mathf.Sin(xAngle);
float z = distance * Mathf.Cos(yAngle) * Mathf.Cos(xAngle);
float y = distance * Mathf.Sin(yAngle);

ui.transform.position = player.transform.position + new Vector3(x,y,z);
Cevap 28/11/2018 saat 14:55
kaynak kullanıcı

oy
0

ben seni deniyorum ise doğru bir noktaya imleci üzerine bir UI oluşturmak istiyorum. Geçenlerde benim oyunda benzer bir şey yaptı. ve bu i did it nasıl.

 if (Input.GetMouseButtonDown(0)) // use the ray cast to get a vector3 of the location your ui      
                                 // you could also do this manualy of have the computer do it the main thing is to 
                                  // get the location in the world where you want your ui to be and the
                                 // WorldTOScreenPoint() will do the rest
        {
            RaycastHit hit;
            Vector3 pos;
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            if (Physics.Raycast(ray, out hit))
            {
                pos = hit.point;
                pos.y += yOffset; // use the offset if you want to have it hover above the point
                ui.transform.position = cam.WorldToScreenPoint(pos); // use your main cammera here              
                // then either make your ui vissible or instanciati it here and make sure if you instanciate it 
                // that you make it a child of your cnavas


            }
        }

Bu size sorunu çözer umuyoruz. i bana bildirin yapmaya çalışıyoruz ve ben yardım etmeye ne anlama değilim edin.

Not: Eğer uzağa hareket ettikçe uzak nokta ölçeğinden ui aşağı hareket ve yakın olduğumuzda bu büyütmek zaman ui uzağa bakmak yapmak istiyorsanız.

Cevap 27/11/2018 saat 18:59
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more