本文整理汇总了C++中Input::IsKeyDown方法的典型用法代码示例。如果您正苦于以下问题:C++ Input::IsKeyDown方法的具体用法?C++ Input::IsKeyDown怎么用?C++ Input::IsKeyDown使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Input
的用法示例。
在下文中一共展示了Input::IsKeyDown方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: ProcessInput
void ProcessInput(const Input& input)
{
if (input.IsKeyPressed(Key::ESCAPE))
{
input.SetCursorVisible(true);
m_isMouseGrabbed = false;
}
if (input.IsKeyDown(Key::W))
{
m_cameraTransform->position += m_cameraTransform->GetForward() * m_speed;
}
if (input.IsKeyDown(Key::S))
{
m_cameraTransform->position += m_cameraTransform->GetBack() * m_speed;
}
if (input.IsKeyDown(Key::A))
{
m_cameraTransform->position += m_cameraTransform->GetLeft() * m_speed;
}
if (input.IsKeyDown(Key::D))
{
m_cameraTransform->position += m_cameraTransform->GetRight() * m_speed;
}
if (m_isMouseGrabbed)
{
glm::vec2 deltaPos = input.GetMousePosition() - m_centerPosition;
bool rotY = deltaPos.x != 0;
bool rotX = deltaPos.y != 0;
if (rotY)
{
m_cameraTransform->rotation *= glm::normalize(glm::angleAxis(glm::radians(deltaPos.x * m_sensitivity), m_cameraTransform->GetUp()));
}
if (rotX)
{
m_cameraTransform->rotation *= glm::normalize(glm::angleAxis(glm::radians(deltaPos.y * m_sensitivity), m_cameraTransform->GetRight()));
}
if (rotY || rotX)
{
input.SetMousePosition(m_centerPosition);
}
}
if (input.IsMouseButtonPressed(Mouse::BUTTON_LEFT))
{
input.SetCursorVisible(false);
input.SetMousePosition(m_centerPosition);
m_isMouseGrabbed = true;
}
}
示例2: Update
void Player::Update(const Input& input, Game& game, const Map& map, std::list<GameObject*>& objects)
{
Move(input, map, objects);
PickItems(objects);
if (input.IsKeyDown(bindings_->GetBinding(PlayerAction::DropBomb)))
{
if (availableBombs_ > 0)
{
bool result = game.CreateBomb(position_.X, position_.Y, power_);
if (result == true)
availableBombs_--;
}
}
if (availableBombs_ < maxBombs_)
{
bombReload_++;
if (bombReload_ >= BombReloadTime)
{
availableBombs_++;
bombReload_ = 0;
}
}
}
示例3: Update
// CODE_CHANGE: Made function parameter const
void Overlay::Update( const Input & User )
{
if( m_reachedGoal )
{
if( User.IsKeyDown( 'Y' ) )
{
m_wantsReset = true;
ResetGoalFlag();
}
}
}
示例4: Input_isKeyDown
static VALUE Input_isKeyDown(VALUE vSelf, VALUE vKey) {
// Get C++ object pointer from vSelf
Input *pSelf;
Data_Get_Struct(vSelf, Input, pSelf);
return pSelf->IsKeyDown((Key::Code)NUM2INT(vKey)) ? Qtrue : Qfalse;
}
示例5: _tWinMain
int APIENTRY _tWinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
Engine::Init();
Input input;
input.Init();
Window window;
window.Init(800, 600, "killerg2d");
ResMgr resmgr;
resmgr.Init();
FrameRate framerate;
framerate.Init(600);
Timer timer;
timer.Init();
SpiritAnimate spirit;
spirit.Init("abc.txt");
int x = 100, y = 100;
int model = 0;
while( !input.IsKeyDown(SDLK_ESCAPE) )
{
timer.Update();
input.Update();
if( input.IsKeyDown(SDLK_LEFT) )
x-=1;
if( input.IsKeyDown(SDLK_RIGHT) )
x+=1;
if( input.IsKeyDown(SDLK_UP) )
y-=1;
if( input.IsKeyDown(SDLK_DOWN) )
y+=1;
if( input.IsKeyDown(SDLK_x) )
spirit.Play();
if( input.IsKeyDown(SDLK_y) )
spirit.Stop();
spirit.Update(timer.GetIntervalF());
window.Clear();
spirit.Draw(&window, x, y);
window.Flush();
framerate.WaitFrame();
}
timer.Destroy();
framerate.Destroy();
resmgr.Destroy();
window.Destroy();
input.Destroy();
Engine::Destroy();
}
示例6: Move
void Player::Move(const Input& input, const Map& map, const std::list<GameObject*>& objects)
{
int xMove = 0;
int yMove = 0;
// This method first calculates the player attempted move (xMove and yMove).
int realSpeed = RealSpeed();
if (input.IsKeyDown(bindings_->GetBinding(PlayerAction::MoveUp)))
yMove -= realSpeed;
if (input.IsKeyDown(bindings_->GetBinding(PlayerAction::MoveLeft)))
xMove -= realSpeed;
if (input.IsKeyDown(bindings_->GetBinding(PlayerAction::MoveDown)))
yMove += realSpeed;
if (input.IsKeyDown(bindings_->GetBinding(PlayerAction::MoveRight)))
xMove += realSpeed;
Rectangle newPosition(position_);
int xMoveUnit = (xMove == 0) ? 0 : xMove / abs(xMove);
int yMoveUnit = (yMove == 0) ? 0 : yMove / abs(yMove);
bool canMove = true;
// Then we try to move there by going 1 point by 1 point.
// We loop while the previous iteration made us move.
// We try to move on each axis by 1 point as long as we have 'move points' (stored in xMove and yMove) for this axis.
while(canMove == true)
{
canMove = false;
if (xMove != 0)
{
newPosition.X += xMoveUnit;
if (map.CanMoveTo(this, newPosition, objects))
{
xMove -= xMoveUnit;
canMove = true;
}
else
{
newPosition.X -= xMoveUnit;
}
}
if (yMove != 0)
{
newPosition.Y += yMoveUnit;
if (map.CanMoveTo(this, newPosition, objects))
{
yMove -= yMoveUnit;
canMove = true;
}
else
{
newPosition.Y -= yMoveUnit;
}
}
} // At the end of the loop, we reached the closest point to the desired arrival.
// Finally, we simply store the move direction and the new position.
int xDiff = newPosition.X - position_.X;
int yDiff = newPosition.Y - position_.Y;
isMoving_ = (xDiff != 0) || (yDiff != 0);
if (xDiff < 0)
direction_ = MoveDirection::Left;
else if (xDiff > 0)
direction_ = MoveDirection::Right;
if (yDiff < 0)
direction_ = MoveDirection::Up;
else if (yDiff > 0)
direction_ = MoveDirection::Down;
position_ = newPosition;
}
示例7: Update
void CurrentApp::Update(float dt)
{
//Update the camera for movement
m_camera->Update(dt);
m_particleEmitter->update(dt);
glm::vec3 pos = glm::vec3(100 * cos(CurrentTime() * 0.05f) + 150, 80, 100 * sin(CurrentTime() * 0.05f) + 150);
m_fairyEmitter->SetPosition(pos);
m_light->SetPosition(pos);
for (int i = 0; i < 5; ++i)
{
m_AI[i]->update(dt);
}
Input* IM = Input::GetInstance();
glm::mat4 cameraWorld = m_camera->GetTransform();
PxVec3 displacement = PxVec3(0, 0, 0);
bool notZero = false;
bool m_canFly = false;
if (IM->IsKeyDown('W'))
{
displacement -= PxVec3(cameraWorld[2].x, (m_canFly ? cameraWorld[2].y : 0), cameraWorld[2].z);
notZero = true;
}
if (IM->IsKeyDown('A'))
{
displacement -= PxVec3(cameraWorld[0].x, (m_canFly ? cameraWorld[0].y : 0), cameraWorld[0].z);
notZero = true;
}
if (IM->IsKeyDown('S'))
{
displacement += PxVec3(cameraWorld[2].x, (m_canFly ? cameraWorld[2].y : 0), cameraWorld[2].z);
notZero = true;
}
if (IM->IsKeyDown('D'))
{
displacement += PxVec3(cameraWorld[0].x, (m_canFly ? cameraWorld[0].y : 0), cameraWorld[0].z);
notZero = true;
}
if (notZero)
displacement = displacement.getNormalized();
if (m_verticleSpeed > -10.0f && !m_canFly || m_verticleSpeed > 0 && m_canFly)
m_verticleSpeed -= dt;
displacement.y += m_verticleSpeed;
PxControllerFilters filters;
g_PlayerController->move(displacement, 0.01f, dt, filters);
PxExtendedVec3 playerPos = g_PlayerController->getPosition();
PxExtendedVec3 footPos = g_PlayerController->getFootPosition();
//I do these calculations individually inside this vector constructor because PxEtendedVec3 doesn't contain some of the necessary operators to do this.
vec3 endPos = vec3(2.0f * playerPos.x - footPos.x, 2.0f * playerPos.y - footPos.y, 2.0f * playerPos.z - footPos.z);
m_camera->SetPosition(endPos);
//Freeze the physics
if (m_freezePhysics == false)
{
UpdatePhysx(dt);
}
else
{
UpdatePhysx(0);
}
//Generate new map
if (Input::GetInstance()->IsKeyPressed('R'))
{
m_terrain->GenerateFromPerlin();
m_terrain->AddPhysicsShape(g_PhysicsScene, g_Physics);
m_nodeMap->GenerateFromTerrain(m_terrain);
m_world->Generate();
for (unsigned int i = 0; i < g_PhysXActors.size(); ++i)
{
PxTransform transform(PxVec3(150, 5 + (1.1f * i), 150));
g_PhysXActors[i]->setGlobalPose(transform);
}
}
if (Input::GetInstance()->IsKeyPressed('N'))
{
m_nodeMap->GenerateFromTerrain(m_terrain);
m_nodeMap->Draw();
}
//Freeze Physics
if (Input::GetInstance()->IsKeyPressed(GLFW_KEY_PAUSE)) { m_freezePhysics = !m_freezePhysics; }
//Hide/Show Cursor
if (Input::GetInstance()->IsKeyPressed(KEY_ESCAPE)) { glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL); }
if (Input::GetInstance()->IsMousePressed(MOUSE_BUTTON_LEFT)) { glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED); }
//Deffered/Forward
if (Input::GetInstance()->IsKeyPressed(KEY_F5)) { m_isDeffered = !m_isDeffered; }
//.........这里部分代码省略.........