added run with leftshift
This commit is contained in:
parent
a6bb3e5769
commit
6c3689f11f
@ -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},
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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);
|
||||
|
||||
|
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user