Lets get this into code tags using the instructions from the pinned thread:
float shiftAdd = 250.0f; //multiplied by how long shift is held. Basically running
float maxShift = 1000.0f; //Maximum speed when holdin gshift
float camSens = 0.25f; //How sensitive it with mouse
private Vector3 lastMouse = new Vector3(255, 255, 255); //kind of in the middle of the screen, rather than at the top (play)
private float totalRun= 1.0f;
void Update () {
lastMouse = Input.mousePosition - lastMouse ;
lastMouse = new Vector3(-lastMouse.y * camSens, lastMouse.x * camSens, 0 );
lastMouse = new Vector3(transform.eulerAngles.x + lastMouse.x , transform.eulerAngles.y + lastMouse.y, 0);
transform.eulerAngles = lastMouse;
lastMouse = Input.mousePosition;
//Mouse camera angle done.
//Keyboard commands
float f = 0.0f;
Vector3 p = GetBaseInput();
if (p.sqrMagnitude > 0){ // only move while a direction key is pressed
if (Input.GetKey (KeyCode.LeftShift)){
totalRun += Time.deltaTime;
p = p * totalRun * shiftAdd;
p.x = Mathf.Clamp(p.x, -maxShift, maxShift);
p.y = Mathf.Clamp(p.y, -maxShift, maxShift);
p.z = Mathf.Clamp(p.z, -maxShift, maxShift);
} else {
totalRun = Mathf.Clamp(totalRun * 0.5f, 1f, 1000f);
p = p * mainSpeed;
}
p = p * Time.deltaTime;
Vector3 newPosition = transform.position;
if (Input.GetKey(KeyCode.Space)){ //If player wants to move on X and Z axis only
transform.Translate(p);
newPosition.x = transform.position.x;
newPosition.z = transform.position.z;
transform.position = newPosition;
} else {
transform.Translate(p);
}
}
}
private Vector3 GetBaseInput() { //returns the basic values, if it's 0 than it's not active.
Vector3 p_Velocity = new Vector3();
if (Input.GetKey (KeyCode.W)){
p_Velocity += new Vector3(0, 0 , 1);
}
if (Input.GetKey (KeyCode.S)){
p_Velocity += new Vector3(0, 0, -1);
}
if (Input.GetKey (KeyCode.A)){
p_Velocity += new Vector3(-1, 0, 0);
}
if (Input.GetKey (KeyCode.D)){
p_Velocity += new Vector3(1, 0, 0);
}
return p_Velocity;
}
}
float mainSpeed = 100.0f; //regular speed
Next, we have some strange code dangling at the end here… but ok.
On to your questions:
“when i use it i would fly around” - this is because your code only uses Transform.Translate. There is no gravity anywhere, nor any collision. You should be using a Rigidbody and any of its various methods that move it around (each with its own way of doing that… and the one you pick depends on how you want your controls to feel). Or you can use a CharacterController and the ‘Move’ method on that.
“how do i also lock my mouse in place” - use the Cursor.lockState if you want to lock it:
…
If you desire more in depth assistance than that you should attempt to post a more coherent post with code formatted correctly. Also toss in some level of grammar and punctuation… doesn’t have to be perfect, mine is far from, but something… a capital letter at the beginning of your sentences would be a nice first step.