added run with leftshift

This commit is contained in:
Lendemor 2017-08-19 20:29:34 +02:00
parent a6bb3e5769
commit 6c3689f11f
4 changed files with 14 additions and 6 deletions

View File

@ -6,7 +6,7 @@
class DefaultKeysMap : public IKeysMap
{
public:
enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP,
enum{MAIN_ACTION, SECONDARY_ACTION, TERTIARY_ACTION, MOVE_FORWARD, MOVE_BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP,RUN,
TOGGLE_NOCLIP, TOGGLE_PHYSICS_DEBUG, TOGGLE_CONSOLE,
MOVE_CURSOR_LEFT, MOVE_CURSOR_RIGHT, TOGGLE_MOUSE_CURSOR, LEFT_CLICK,
EXIT_GAME,LAST_DEFAULT_ACTION};
@ -16,9 +16,10 @@ public:
keys.push_back( {{SECONDARY_ACTION,input::MOUSE}, sf::Mouse::Right, IKeysMap::PRESSED} );
keys.push_back( {{TERTIARY_ACTION,input::MOUSE}, sf::Mouse::Middle, IKeysMap::PRESSED} );
keys.push_back( {{MOVE_FORWARD,input::KEYBOARD}, sf::Keyboard::Z, IKeysMap::HOLD} );
keys.push_back( {{MOVE_BACKWARD,input::KEYBOARD}, sf::Keyboard::S, IKeysMap::HOLD} );
keys.push_back( {{MOVE_BACKWARD,input::KEYBOARD}, sf::Keyboard::S, IKeysMap::HOLD} );
keys.push_back( {{STRAFE_LEFT,input::KEYBOARD}, sf::Keyboard::Q, IKeysMap::HOLD} );
keys.push_back( {{STRAFE_RIGHT,input::KEYBOARD}, sf::Keyboard::D, IKeysMap::HOLD} );
keys.push_back( {{RUN,input::KEYBOARD}, sf::Keyboard::LShift,IKeysMap::HOLD} );
keys.push_back( {{JUMP,input::KEYBOARD}, sf::Keyboard::Space, IKeysMap::PRESSED} );
keys.push_back( {{TOGGLE_NOCLIP,input::KEYBOARD}, sf::Keyboard::G, IKeysMap::PRESSED} );
keys.push_back( {{TOGGLE_PHYSICS_DEBUG,input::KEYBOARD},sf::Keyboard::P, IKeysMap::PRESSED} );
@ -41,6 +42,7 @@ public:
{STRAFE_LEFT,input::KEYBOARD},
{STRAFE_RIGHT,input::KEYBOARD},
{JUMP,input::KEYBOARD},
{RUN,input::KEYBOARD},
{TOGGLE_NOCLIP,input::KEYBOARD},
{TOGGLE_PHYSICS_DEBUG,input::KEYBOARD},
{TOGGLE_MOUSE_CURSOR,input::KEYBOARD},

View File

@ -55,6 +55,7 @@ void FirstPersonCamera::setUpVector(const glm::vec3 &up)
}
const float WALK_SPEED = 5.f;
const float RUNNING_MULTIPLIER = 2.f;
const float TORSO_RADIUS = 0.30f;
const float TORSO_HEIGHT = 0.8f;
const float LEGS_HEIGHT = 1.f;
@ -92,13 +93,14 @@ PlayerCharacterNode::~PlayerCharacterNode()
delete m_playerLight;
}
void PlayerCharacterNode::setInputs(int forward, int backward, int strafeLeft, int strafeRight, int jump, int toggleNoClip)
void PlayerCharacterNode::setInputs(int forward, int backward, int strafeLeft, int strafeRight, int jump, int run, int toggleNoClip)
{
m_inputActions[FORWARD] = forward;
m_inputActions[BACKWARD] = backward;
m_inputActions[STRAFE_LEFT] = strafeLeft;
m_inputActions[STRAFE_RIGHT] = strafeRight;
m_inputActions[JUMP] = jump;
m_inputActions[RUN] = run;
m_inputActions[TOGGLE_NOCLIP] = toggleNoClip;
}
@ -121,6 +123,7 @@ void PlayerCharacterNode::update()
int walk = 0;
int strafe = 0;
bool jump = false;
bool run = false;
for(Action action : input->getActions())
{
if(action.action == m_inputActions[FORWARD])
@ -133,6 +136,8 @@ void PlayerCharacterNode::update()
++strafe;
else if(action.action == m_inputActions[JUMP])
jump = true;
else if(action.action == m_inputActions[RUN])
run=true;
else if(action.action == m_inputActions[TOGGLE_NOCLIP])
toggleNoClip();
}
@ -161,6 +166,7 @@ void PlayerCharacterNode::update()
else
{
glm::vec2 hPos = glm::normalize(glm::vec2(moveDir.x, moveDir.z))*WALK_SPEED;
if(run) hPos *= RUNNING_MULTIPLIER;
targetVelocity.setX(hPos.x);
targetVelocity.setZ(hPos.y);
}

View File

@ -47,13 +47,13 @@ class PlayerCharacterNode : public CameraNode
std::vector<int> m_inputActions;
enum PlayerAction {FORWARD, BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP, TOGGLE_NOCLIP};
enum PlayerAction {FORWARD, BACKWARD, STRAFE_LEFT, STRAFE_RIGHT, JUMP, RUN, TOGGLE_NOCLIP};
public:
PlayerCharacterNode(bool noClip = true);
~PlayerCharacterNode();
void setInputs(int forward, int backward, int strafe_left, int strafe_right, int jump = NO_ACTION, int toggleNoClip = NO_ACTION);
void setInputs(int forward, int backward, int strafe_left, int strafe_right, int jump = NO_ACTION, int run= NO_ACTION, int toggleNoClip = NO_ACTION);
void setPosition(float x, float y, float z);

View File

@ -192,7 +192,7 @@ public:
void initScene(){
//player
m_player = new PlayerCharacterNode(false);
m_player->setInputs(DefaultKeysMap::MOVE_FORWARD, DefaultKeysMap::MOVE_BACKWARD, DefaultKeysMap::STRAFE_LEFT, DefaultKeysMap::STRAFE_RIGHT, DefaultKeysMap::JUMP, DefaultKeysMap::TOGGLE_NOCLIP);
m_player->setInputs(DefaultKeysMap::MOVE_FORWARD, DefaultKeysMap::MOVE_BACKWARD, DefaultKeysMap::STRAFE_LEFT, DefaultKeysMap::STRAFE_RIGHT, DefaultKeysMap::JUMP, DefaultKeysMap::RUN, DefaultKeysMap::TOGGLE_NOCLIP);
SceneTree* scene = RESOURCE_GET(SceneTree, m_demo_scene);
scene->getRootObject()->addChild(m_player);
scene->setMainCamera(m_player);