如何在运行时更改camerascenendefps键绑定

How to change CameraSceneNodeFPS keybindings at run time?

本文关键字:camerascenendefps 绑定 运行时      更新时间:2023-10-16

不言自明。我希望能够改变一个FPS相机的按键。我知道如何在创建相机时更改键绑定,但之后我找不到这样做的方法。有人知道怎么做吗?

一种可能性是从一个普通的相机节点开始,然后附加一个SceneNodeAnimatorCameraFPS

irr::scene::ICameraSceneNode* camera;
irr::scene::ISceneNodeAnimatorCameraFPS* ca;

camera = _smngr->addCameraSceneNode();
irr::core::array<irr::SKeyMap> keyMap;
keyMap[0].Action = EKA_MOVE_FORWARD;
keyMap[0].KeyCode = KEY_UP;
keyMap[1].Action = EKA_MOVE_FORWARD;
keyMap[1].KeyCode = KEY_KEY_W;
keyMap[2].Action = EKA_MOVE_BACKWARD;
keyMap[2].KeyCode = KEY_DOWN;
keyMap[3].Action = EKA_MOVE_BACKWARD;
keyMap[3].KeyCode = KEY_KEY_S;
keyMap[4].Action = EKA_STRAFE_LEFT;
keyMap[4].KeyCode = KEY_LEFT;
keyMap[5].Action = EKA_STRAFE_LEFT;
keyMap[5].KeyCode = KEY_KEY_A;
keyMap[6].Action = EKA_STRAFE_RIGHT;
keyMap[6].KeyCode = KEY_RIGHT;
keyMap[7].Action = EKA_STRAFE_RIGHT;
keyMap[7].KeyCode = KEY_KEY_D;

ca->setKeyMap(keyMap);
camera->addAnimator(ca);

如果你以后想改变键绑定,那么只需改变正确的Keycode并使用

ca->setKeyMap(keyMap);

:)

编辑:你也可以访问由场景管理器附加的动画器

camera = _smngr->addCameraSceneNodeFPS();
irr::core::list<irr::scene::ISceneNodeAnimator*>::ConstIterator al = camera->getAnimators().begin();
irr::scene::ISceneNodeAnimatorCameraFPS *a = (irr::scene::ISceneNodeAnimatorCameraFPS*)*al;

irr::core::array<irr::SKeyMap> keyMap;
keyMap[0].Action = EKA_MOVE_FORWARD;
keyMap[0].KeyCode = KEY_UP;
keyMap[1].Action = EKA_MOVE_FORWARD;
keyMap[1].KeyCode = KEY_KEY_W;
keyMap[2].Action = EKA_MOVE_BACKWARD;
keyMap[2].KeyCode = KEY_DOWN;
keyMap[3].Action = EKA_MOVE_BACKWARD;
keyMap[3].KeyCode = KEY_KEY_S;
keyMap[4].Action = EKA_STRAFE_LEFT;
keyMap[4].KeyCode = KEY_LEFT;
keyMap[5].Action = EKA_STRAFE_LEFT;
keyMap[5].KeyCode = KEY_KEY_A;
keyMap[6].Action = EKA_STRAFE_RIGHT;
keyMap[6].KeyCode = KEY_RIGHT;
keyMap[7].Action = EKA_STRAFE_RIGHT;
keyMap[7].KeyCode = KEY_KEY_D;

a->setKeyMap(keyMap);
相关文章:
  • 没有找到相关文章