- Home /
Question by
AlienHook · Jun 17, 2014 at 11:13 AM ·
c#charactercharactercontrollerspeedsimplemove
Run speed in world-based character controller
I'm making a character controller based on world coordinates, but I can't seem to get the speed to increase when the spacebar is pressed. Here's my code:
using UnityEngine;
using System.Collections;
public class IsoCharacterController : MonoBehaviour
{
public float walkSpeed;
float walkX, walkZ, lookX, lookZ;
public CharacterController controller; // dragged into inspector
Vector3 lookTarget;
void Update ()
{
if (Input.GetKey(KeyCode.Space)) // Trying to get speed to increase when space is pressed
walkSpeed = 9f;
else
walkSpeed = 6f;
if (Input.GetKey(KeyCode.W) && ! Input.GetKey(KeyCode.S)) // Moving up
{
lookZ = transform.position.z - 1f;
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.A))
{
walkZ = -walkSpeed/2;
}
else
{
walkZ = -walkSpeed;
}
}
if (Input.GetKey(KeyCode.S) && ! Input.GetKey(KeyCode.W)) // Moving down
{
lookZ = transform.position.z + 1f;
if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.A))
{
walkZ = walkSpeed/2;
}
else
{
walkZ = walkSpeed*20f;
}
}
if (Input.GetKey(KeyCode.D) && ! Input.GetKey(KeyCode.A)) // Moving right
{
lookX = transform.position.x - 1f;
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S))
{
walkX = -walkSpeed/2;
}
else
{
walkX = -walkSpeed;
}
}
if (Input.GetKey(KeyCode.A) && ! Input.GetKey(KeyCode.D)) // Moving left
{
lookX = transform.position.x + 1f;
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.S))
{
walkX = walkSpeed/2;
}
else
{
walkX = walkSpeed;
}
}
if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.D))
{
lookTarget = (new Vector3(lookX, transform.position.y, lookZ));
transform.LookAt(lookTarget);
}
lookX = transform.position.x;
lookZ = transform.position.z;
controller.SimpleMove(new Vector3(walkX, 0, walkZ));
walkX = 0f;
walkZ = 0f;
}
}
Thanks for any help!
Comment