Jól elszórakoztam ezzel is, az Intel-es Havok fórumon is tiszteletemet tettem, ahol mondották, hogy hát 100 féle képen meg lehet oldani egy hkpCharacterRigidBody reptetését. 0-ra állítom a gravitciót és wiiiii, már száll is amerre akarom!
Ez igaz, de ha hozzáér bármihez a talpán, akkor odatapad, mert beindul a gyalogló-algoritmus, csúszósíkok számolása, stb. Ráadásul a hkpCharacterContext::update mindig nullázza az y-t a mozgási irányban, így hiába adunk meg a hkpCharacterInput::m_forward-ban függőleges mozgási irányt, az csak vízszintes síkon hat. Így aztán én inkább kitaláltam magamtól, ahogy szoktam. :)
A megoldás:
ne vegye észre a kontroller, hogy áll valamin, amit ezzel lehet elérni:
hkpCharacterInput::m_surfaceInfo.m_supportedState = hkpSurfaceInfo::UNSUPPORTED;
A kontroller mozgatása ezután már működik, nem a hkpCharacterInput-on keresztül persze, hanem közvetlenül a rigidbody sebességét kell állítani, vagy a gravitációt +- irányba beállítani.
Elsőre furának tűnt egyébként, hogy nincs standard repülő-npc megoldás egy drága 'industry-standard api'- ban, de ez talán nem is olyan meglepő, ha a mai 3d-s játékokat nézzük. Ritkák manapság a repülő szörnyek, maximum helikopterek, azokat meg meg lehet oldani egyszerűbben is. Azok nem szoktak falakról visszapattanni, csúszkálni :3.