Autor Wątek: Physx - character controller  (Przeczytany 1326 razy)

Offline PP

  • Użytkownik

# Marzec 07, 2009, 15:04:58
Witam
W mojej grze do poruszania postacią i sprawdzania kolizji używam character controller'a ,ze statycznymi aktorami wszystko
jest w porządku .Ostatnio jednak chciałem stworzyć więcej dynamizmu w grze i dodałem poruszające się platformy.
Platforma to kinematyczny aktor ,którego pozycje zmieniam przez moveGlobalPosition .Jeśli platforma się nie porusza kolizje działają
dobrze.Natomiast w trakcie ruchu postać po prostu przez nią przelatuje.Próbowałem sprawdzać kolizje character controller'a w
w funkcji onShapeHit ,a następnie jeśli jest kolizja to poruszać go o tą samą wartość co platformy.Niestety to nie przyniosło
efektu jakiego oczekiwałem.Wiem ,że jest tu wiele osób używających physx'a więc czekam na jakieś sugestie , rady jak coś takiego zrobić.

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline Dab

  • Redaktor
    • blog

# Marzec 07, 2009, 15:11:02
Tak się nie da. Character to tak naprawdę prosty kinematyczny aktor wzbogacony o kolizje.
Rozwiązanie, które zastosowałem u siebie jest takie:
* gdy postać dotyka platformy, to ustawiany jest w klasie postaci odpowiedni wskaźnik na platformę
* gdy postać przestaje dotykać platformy, wskaźnik jest zerowany

Teraz w funkcji wyliczającej przesunięcie postaci bierzemy pod uwagę ten wskaźnik. Jeżeli jest niepusty to prędkość platformy dodajemy do prędkości postaci.

Offline PP

  • Użytkownik

# Marzec 07, 2009, 17:45:44
Hmm.. spróbowałem tak jak radzisz ,ale postać nie porusza się razem z platformą jak powinna .
Używam NxUserControllerHitReport ,ale kolizje wydają się być sprawdzane niedokładnie .
W jaki sposób sprawdzasz czy postać dotyka platformy ?

Offline Dab

  • Redaktor
    • blog

# Marzec 07, 2009, 18:05:31
Również korzystam z NxUserControllerHitReport::onShapeHit. W każdej klatce możesz resetować flagę "kontakt z platformą" a w funkcji onShapeHit ją ustawiać. U mnie nie stwierdziłem żadnych niedokładności w jej działaniu.

Offline PP

  • Użytkownik

# Marzec 07, 2009, 21:30:27
Jedyne do czego doszedłem to to ,że postać czasami po wskoczeniu na platformę porusza się w górę i w dół w zależności od kierunku
platformy ,ale niestety nie chce do niej równo przylegać.Platformę przesuwam przy użyciu MoveGlobalPosition ,a postać
używając move i wygląda jakby przesuwała się o inne wartości .