[Irrlicht] Widok pierwszoosobowy
Ostatnio zmodyfikowano 2013-08-12 19:29
kubek3898 Temat założony przez niniejszego użytkownika |
[Irrlicht] Widok pierwszoosobowy » 2013-08-11 09:52:35 Mam wczytaną mapę i model na scenie. Jak zrobić, by kamera nie była względem sceny, a względem modelu? Chodzi mi o widok z "oczu", albo chociaż widok zza ramienia.
Próbowałem addCameraSceneNodeFps(), ale nic nie daje, chociaż możliwe jest, a racczej pewne że coś knocę.
Pozdrawiam |
|
MrPoxipol |
» 2013-08-11 11:14:45 Ustawiaj kamerę tam gdzie jest model, a następnie przesuń ją o tyle ile chcesz, aby była od modelu. |
|
kampar |
» 2013-08-11 11:30:11 Użyj addCameraSceneNode(), dzięki temu będziesz mógł wszystko ręcznie ustawiać. Pamiętaj tylko, że domyślnie kamera ma ustawioną metodę bindTargetAndRotation(bool) na false i przez to nie możesz zmienić rotacji kamery, a jedynie cel na który jest ona zwrócona. Przy kamerze pierwszoosobowej lepiej jest ustawić camera->bindTargetAndRotation(true) i dzięki temu możesz dowolnie obracać kamerą. |
|
kubek3898 Temat założony przez niniejszego użytkownika |
» 2013-08-11 15:43:26 No ale wtedy również, zamiast obracać modelem, będę obracać w około mapy, a ja chcę zamontować kamerę w modelu. Tak jak jest to w różnych grach typu cRPG (widok z oczu). |
|
kampar |
» 2013-08-11 16:31:25 No to ustaw kamerę tuż przed oczami modelu i gdy będziesz obracał model to obracaj również kamerę. |
|
megatron |
» 2013-08-11 23:25:32 W grach typu rpg używa się kamery maya. Irrlicht także oferuje obsługę tej kamery. Jest w tym mały kruszek gdyż kamera maya jest statyczną kamerą, ale można ją łatwo "przyczepić"do postaci. Sam wykorzystuję tą kamerę i polecam do gier właśnie typu rpg. Jeśli coś źle zrozumiałem to serdecznie przepraszam. #@#EDIT#@# Kamere maya tworzysz podobnie do fps: ICameraSceneNode * kam = smgr->addCameraSceneNodeMaya( 0, - 1000, 0, 0, 2000, 11 ); to co podałem to kamera z moimi ustawieniami. to tylko dla przykładu. a później tylko ustawiasz kamerę: void Game::CamSetProperties( int height_kam ) { kam_pos = kam->getPosition(); kam_tar = kam->getTarget(); kam_tar.X = charac.pos_pos.X; kam_tar.Z = charac.pos_pos.Z; kam_tar.Y = charac.pos_pos.Y + height_kam; kam->setTarget( kam_tar ); } height_kam to wysokość na jakiej ma znajdować się kamera ;) |
|
MrPoxipol |
» 2013-08-12 11:52:31 @up Nie lepiej tak? Dużo krócej ;p void Game::CamSetProperties( int height_kam ) { kam_pos = kam->getPosition(); kam_tar = kam->getTarget(); kam_tar = charac.pos_pos; kam_tar.Y += height_cam; kam->setTarget( kam_tar ); }
;> |
|
megatron |
» 2013-08-12 11:59:07 nie do końca ponieważ musisz umieścić to w pętli ponieważ postać się porusza a kam_tar.Y += height_cam; spowoduje że kamera będzie leciała w górę ;) #@#EDIT#@#sry, jednak tak też jest git :D pomyliłem pozycję z celem ;) #@#EDIT_2#@#Można by jeszcze pozbyć się kam_pos = kam->getPosition(); bo do niczego nie jest wykorzystywane :D #@#EDIT_3#@#@up -1 linijka ;) |
|
« 1 » 2 |