Irrlicht 内でキープレスをプログラムするのに苦労しています。
そのようなイベントレシーバーを作成しました:
class MyEventReceiver : public IEventReceiver
{
virtual bool OnEvent(const SEvent& event)
{
if (event.EventType == irr::EET_KEY_INPUT_EVENT)
{
KeyIsDown[event.KeyInput.Key] = event.KeyInput.PressedDown;
{
if (event.EventType == irr::EET_KEY_INPUT_EVENT&&!event.KeyInput.PressedDown)
switch(event.KeyInput.Key)
{
case KEY_KEY_1:
case KEY_KEY_2:
case KEY_KEY_3:
}
return true;
}
}
return false;
}
virtual bool IsKeyDown(EKEY_CODE keyCode) const
{
return KeyIsDown[keyCode];
}
MyEventReceiver()
{
memset(KeyIsDown, false, sizeof(KeyIsDown));
}
private:
bool KeyIsDown[KEY_KEY_CODES_COUNT];
};
これはすべてそのように機能しているようです。ただし、「while(device->run())」内に実装しました:
if(receiver.IsKeyDown(irr::KEY_KEY_1))
{
}
レシーバーの「識別子レシーバーが定義されていません」というエラーが表示されます。私が見るすべての例で、宣言のないこのレシーバー変数を見て、それが機能すると主張しています。私は何を間違っていますか?
サンプル プロジェクト "LoadIrrFile" (#15) に基づいてビルドしています。
計画は、キー 1 ~ 3 の武器スイッチを実装することです。キープレスを初期化したら、コードを取得できるはずです。
ここで見つけたスニペットを使用しています: http://irrlicht.sourceforge.net/forum//viewtopic.php?p=143082
詳細情報が必要な場合の完全なコード セグメントは次のとおりです: http://pastie.org/pastes/8620301/text