Skip to main content
GameDev.net gamedev.net
🔒 Locked 🎮 Unity

Adding sprint ability - how?

Started by drwbns May 2, 2011 at 6:08 PM 1 replies 1.5k views
Original Post
drwbns
drwbns
How would I add a sprinting ability when Right Shift is held to the following code? Thanks for any help!

void InputController::injectKeyboardState(OIS::Keyboard* mKeyboard)
{
//camera
float walk = 0,strafe = 0, up = 0, sprint = 0;

if (mKeyboard->isKeyDown(OIS::KC_A))
{
strafe = -1;
}
else if (mKeyboard->isKeyDown(OIS::KC_D))
{
strafe = 1;
}
if (mKeyboard->isKeyDown(OIS::KC_W))
{
walk = -1;
}
else if (mKeyboard->isKeyDown(OIS::KC_S))
{
walk = 1;
}
if (mKeyboard->isKeyDown(OIS::KC_PGUP))
{
up = 1;
}
else if (mKeyboard->isKeyDown(OIS::KC_PGDOWN))
{
up = -1;
}

GST->GetCurrentCam()->UpdateLocation(walk, strafe, up);

//player
walk = 0, strafe = 0, sprint = 0;

if (mKeyboard->isKeyDown(OIS::KC_UP))
{
walk = 1;
}
else if (mKeyboard->isKeyDown(OIS::KC_DOWN))
{
walk = -1;
}
if (mKeyboard->isKeyDown(OIS::KC_LEFT))
{
strafe = 1;
}
else if (mKeyboard->isKeyDown(OIS::KC_RIGHT))
{
strafe = -1;
}

if (walk != 0 || strafe != 0)
{
Quaternion q = TPCAM->GetRotation().Inverse();
Ogre::Vector3 send(walk,0,strafe);
send = q * send;
PLAYER->orderMove(send.x,send.z);
}
}


I tried this - but it didn't do anything. help please.

void InputController::injectKeyboardState(OIS::Keyboard* mKeyboard)
{
//camera
float walk = 0,strafe = 0, up = 0, sprint = 0;

if (mKeyboard->isKeyDown(OIS::KC_A))
{
strafe = -1;
}
else if (mKeyboard->isKeyDown(OIS::KC_D))
{
strafe = 1;
}
if (mKeyboard->isKeyDown(OIS::KC_W))
{
walk = -1;
}
else if (mKeyboard->isKeyDown(OIS::KC_S))
{
walk = 1;
}
if (mKeyboard->isKeyDown(OIS::KC_PGUP))
{
up = 1;
}
else if (mKeyboard->isKeyDown(OIS::KC_PGDOWN))
{
up = -1;
}

GST->GetCurrentCam()->UpdateLocation(walk, strafe, up);

//player
walk = 0, strafe = 0, sprint = 0;

if (mKeyboard->isKeyDown(OIS::KC_UP))
{
if (mKeyboard->isKeyDown(OIS::KC_RSHIFT)) {
sprint = 1;
walk = sprint + 1;
}
else {walk = 1;}
}
else if (mKeyboard->isKeyDown(OIS::KC_DOWN))
{
if (mKeyboard->isKeyDown(OIS::KC_RSHIFT))
{
sprint = -1;
walk = sprint -1;
}
else {walk = -1;}
}
if (mKeyboard->isKeyDown(OIS::KC_LEFT))
{
if (mKeyboard->isKeyDown(OIS::KC_RSHIFT)) {
sprint = 1;
strafe = sprint + 1;
}
else { strafe = 1;}
}
else if (mKeyboard->isKeyDown(OIS::KC_RIGHT))
{
if (mKeyboard->isKeyDown(OIS::KC_RSHIFT)) {
sprint = -1;
strafe = sprint -1;
}
else { strafe = -1; }
}

if (walk != 0 || strafe != 0)
{
Quaternion q = TPCAM->GetRotation().Inverse();
Ogre::Vector3 send(walk,0,strafe);
send = q * send;
PLAYER->orderMove(send.x,send.z);
}
}
Daivuk
Daivuk
[color="#1C2837"][font="CourierNew, monospace"][color="#666600"][color="#666600"]**** GAMEDEV PLZ FIX THE COPY PASTE THAT CREATES JUNK KTHXBAI ****[/font]
[font="CourierNew, monospace"] [/font][font="CourierNew, monospace"][color="#666600"]I had to edit that post 4 times...
[/font]
[color="#1C2837"][font="CourierNew, monospace"] [/font]
[color="#1C2837"][font="CourierNew, monospace"][color="#666600"][color="#666600"]I would do that:[/font]
[color="#1C2837"][font="CourierNew, monospace"]
float moveSpeed = 1;
if (mKeyboard->isKeyDown(OIS::KC_RSHIFT))
{[/font]
[color="#1C2837"][font="CourierNew, monospace"] moveSpeed = 2;[/font]
[color="#1C2837"][font="CourierNew, monospace"]}[/font]
[color="#1C2837"][font="CourierNew, monospace"]if (mKeyboard->isKeyDown(OIS::KC_A))[/font]
[color="#1C2837"][font="CourierNew, monospace"]{[/font]
[color="#1C2837"][font="CourierNew, monospace"] strafe = -moveSpeed;[/font][/font]
[color="#1C2837"][font="CourierNew, monospace"]}
[/font]
[color="#1C2837"][font="CourierNew, monospace"] [/font]
[color="#1C2837"][font="CourierNew, monospace"]Ok, I just can't get the code snippet to show up correctly :@[/font]
[font="CourierNew, monospace"][color="#1C2837"]Here is the non formated version:[/font]
[font="CourierNew, monospace"][color="#1C2837"]float moveSpeed = 1;[/font]
[font="CourierNew, monospace"][color="#1C2837"]if (Right shift down)[/font]
[font="CourierNew, monospace"][color="#1C2837"]{[/font]
[font="CourierNew, monospace"][color="#1C2837"] moveSpeed = 2; // What ever speed you want[/font]
[font="CourierNew, monospace"][color="#1C2837"]}[/font]
[font="CourierNew, monospace"][color="#1C2837"]if ('A' is down)[/font]
[font="CourierNew, monospace"][color="#1C2837"]{[/font]
[font="CourierNew, monospace"][color="#1C2837"] strafe = -moveSpeed;[/font]
[font="CourierNew, monospace"][color="#1C2837"]}[/font]
[font="CourierNew, monospace"][color="#1C2837"]...[/font]
drwbns
drwbns
hmm, it's just not changing anything and I don't understand why.

Topic Locked

This topic has been locked by a moderator. New replies are not allowed.

Sign in to reply to this topic.