Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Zewnętrzny W2S, x działa dobrze, y usterki
#1
Hej,   Napisałem świat do funkcji ekranu, działa dobrze, ale jest problem z wynikiem y, to się załamuje. X działa.       Kod:   publiczny statyczny Bool WorldToScreen (Vector3 z, zgnilizna frotowania, float fovDegree, cel Vector3, obecnie wektor Vector2) {var fov = DegreesToRadians (fovDegree); var locLength = (float) (Wysokość / 2f / Tan (fov / 2f)); var fromPoint = new Vector3 (od. X, od. Y, - od. Z); var point = new Vector3 (target. X, target. Y, - target. Z) - fromPoint; var cosX = (float) Cos (rot. PitchRadians); var cozy = (float) Cos (rot YawRadians); var cosZ = (float) Cos (rot. RollRadians); var sinX = (float) Sin (rot. PitchRadians); var sinY = (float) Sin (rot YawRadians); var sinZ = (float) Sin (rot. RollRadians); var matrix = new [,] {{cosZ * cozy - sinZ * sinX * sinY, - cosX * sinZ, cosZ * sinY + cosy * sinZ * sinX}, {cosy * sinZ + cosZ * sinX * sinY, cosZ * cosX, sinZ * sinY - cosZ * cozy * sinX}, { - cosX * sinY, sinX, cosX * cozy}}; var x = matrix [0, 0] * punkt. Macierz X + [0, 1] * punkt. Macierz Y + [0, 2] * punkt. Z; var y = matrix [1, 0] * punkt. Macierz X + [1, 1] * punkt. Macierz Y + [1, 2] * punkt. Z; var z = matrix [2, 0] * punkt. Macierz X + [2, 1] * punkt. Macierz Y + [2, 2] * punkt. Z; point = new Vector3 (x, y, - z); // Jeśli za kamerą. jeśli (punkt Z <0) {wektor = Wektor2. Zero; return false; } Var screenX = locLength * punkt. X / punkt. Z + Szerokość / 2f; var screenY = locLength * punkt. Y / punkt. Z + Wysokość / 2f; wektor = nowy Vector2 (screenX, screenY); return true; }
Reply
#2
Czy dostajesz odpowiednią pozycję od innych graczy? Wiesz w Rustu, że "x" i "z" są współrzędnymi gracza na świecie, a "y" to wysokość tego gracza.
Reply
#3
Zacytować: Originally Posted by sebuli Czy dostajesz odpowiednią postację od innych graczy? Wiesz w Rusta, że "x" i "z" są kordynkami gracza na świecie, a "y" to wysokość tego gracza. Wiem o tym, o czym wspomniałem, że działa, ale tylko w osi x ekranu, y usterki.
Reply
#4
Zacytować: Originally Posted by gal050 Wiem o tym, o czym wspomniałem, że działa, ale tylko w osi x ekranu, y usterki. Jak masz na myśli usterki?
Reply
#5
Zacytować: Originally Posted by wasity Jak masz na myśli usterki? Wyraźnie powiedział w wątku, że trzaskają w górę iw dół. W każdym razie spróbuj dodać -90 do YawRadians Kod: var cosX = (float) Cos (rot. PitchRadians); var cozy = (float) Cos (rot YawRadians - 90); var cosZ = (float) Cos (rot. RollRadians); var sinX = (float) Sin (rot. PitchRadians); var sinY = (float) Sin (rot YawRadians - 90); var sinZ = (float) Sin (rot. RollRadians); Nvm to nie naprawia.
Reply
#6
Jeśli kopiujesz wklejanie bezpośrednio ze źródła i nadal nie działa, wystąpią problemy z wartościami wejściowymi.
Reply
#7
Przy okazji, rdza jest z-x-y, więc twój problem jest w X. Znalazłem więc problem, bardzo proste rozwiązanie uczciwie. Kod: var y = matrix [1, 0] * punkt. Macierz X + [1, 1] * punkt. Macierz Y + [1, 2] * punkt. Z; Do -> Kod: var y = matrix [1, 0] * - point. Macierz X + [1, 1] * - punkt. Macierz Y + [1, 2] * - punkt. Z; Dowód na to, że działa (nie przejmuj się opóźnieniem, mam do kupy gówno otwarte + miałem wysoki ping) https://gfycat.com/AjarBlondCurlew
Reply
#8
Zacytować: Originally Posted by lucasman22 Przy okazji, rdza jest z-x-y, więc twój problem jest w X. Znalazłem więc problem, bardzo proste rozwiązanie uczciwie. Kod: var y = matrix [1, 0] * punkt. Macierz X + [1, 1] * punkt. Macierz Y + [1, 2] * punkt. Z; Do -> Kod: var y = matrix [1, 0] * - point. Macierz X + [1, 1] * - punkt. Macierz Y + [1, 2] * - punkt. Z; Dowód na to, że działa (nie przejmuj się opóźnieniem, mam do kupy gówno otwarte + miałem wysoki ping) https://gfycat.com/AjarBlondCurlew Czy możesz dać mi kod w PM? pls
Reply
#9
Zacytować: Wysłany przez pierwotnie bynetik Czy możesz dać mi kod w PM? pls Czy korzystanie z paska wyszukiwania jest tak trudne? Zewnętrzny przewodnik W2S
Reply
#10
Zacytować: Wysłany przez pierwotnie bynetik Nie rozumiem, jak to zrobić, i jakie dane należy zgłosić do funkcji? Kod: WorldToScreen (jednostka, dane, baza, baza danych, pos, odtwarzacz, dane, baza, prawo, rot, gracz, dane, baza, prawo, pos, out, test) Podaj mi to, zagraj w innym graczu, dobrze? https://imgur.com/a/pSwsy [/KOD] Zadeklaruj na przykład takie rzeczy gracza; Kod: var Players = Entity. GetPlayers (); Vector3 myPos = Gracze [0]. Pozycja; Vector3 myAngle = Gracze [0]. Obrót ; Wtedy twój światowy screen powinien wyglądać tak: Kod: WorldToScreen (myPos, myAngle, player. Position, out test) Musisz także przekształcić aparat fotograficzny w kos / sin na radiany.
Reply




Users browsing this thread: 1 Guest(s)