当前位置: 首页>>代码示例>>C++>>正文


C++ Input::IsKeyDown方法代码示例

本文整理汇总了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;
        }
    }
开发者ID:sheshn,项目名称:EngineS,代码行数:58,代码来源:main.cpp

示例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;
			}
		}
	}
开发者ID:BenjaminHamon,项目名称:ClassicBomberman,代码行数:25,代码来源:Player.cpp

示例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();
		}
	}
}
开发者ID:mister51213,项目名称:EscapeNY,代码行数:12,代码来源:Overlay.cpp

示例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;
}
开发者ID:freemaul,项目名称:SFML,代码行数:6,代码来源:sfInput.cpp

示例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();


	
}
开发者ID:killgxlin,项目名称:killerg2d,代码行数:79,代码来源:killerg_nc.cpp

示例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;
	}
开发者ID:BenjaminHamon,项目名称:ClassicBomberman,代码行数:71,代码来源:Player.cpp

示例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; }
//.........这里部分代码省略.........
开发者ID:Milswanca,项目名称:IconicEngine,代码行数:101,代码来源:CurrentApp.cpp


注:本文中的Input::IsKeyDown方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。