- Home /
Simple WSAD movement + jumping.
I've been searching for a few hours now but all I can find is posts telling the topic creators to copy the first person script or to do something that I don't want to do.
I've been messing with GUI functions for a while now and I'm starting to get used to Unity Javascript. I want to make a cube act as a player and have a basic WSAD movement with jump and sprint. All I'd like is to have W, S, A & D move the player in each direction but have them as seperate code. For example:
if(Input.GetKey(KeyCode.W))
{
MoveForward
}
I am currently using:
var controller : CharacterController = GetComponent(CharacterController);
var forward = transform.TransformDirection(Vector3.forward);
var curSpeed = speed * Input.GetAxis ("Vertical");
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
controller.SimpleMove(forward * curSpeed);
But since I'm starting out I'd like things kept really simple so that I can add and improve as I go along.
This seems like a pretty simple way to grab keyboard input.
function Update () {
for (var c : char in Input.inputString) {
print("This is the key that was pressed: " + c)
if(c=="w"){
//Code goes here
$$anonymous$$oveForward():
}
if(c=="a"){
//Code goes here
}
if(c=="s"){
//Code goes here
}
if(c=="d"){
//Code goes here
}
}
}
//Here you define the movment functions
function $$anonymous$$oveForward(){
var controller : CharacterController = GetComponent(CharacterController);
var forward = transform.TransformDirection(Vector3.forward);
var curSpeed = speed * Input.GetAxis ("Vertical");
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
controller.Simple$$anonymous$$ove(forward * curSpeed);
}
Answer by cowasockytommy · Apr 18, 2013 at 06:40 PM
var cc : CharacterController
var moveDirection : Vector3 = Vector3.zero;
var walkSpeed : float = 5.0;
var runSpeed : float = 10.0;
var gravity : float = 5.0;
var jumpHeight : float 15.0;
function Start()
{
cc = GetComponent(CharacterController);
}
function Update()
{
if(Input.GetKey(KeyCode.Space))
{
moveDirection.y = jumpHeight;
}
if(Input.GetKey(KeyCode.LeftShift))
moveDirection = (Input.GetAxis("Horizontal") * walkSpeed,moveDirection.y,Input.GetAxis("Vertical") * walkSpeed)
else
{
moveDirection = (Input.GetAxis("Horizontal") * runSpeed,moveDirection.y,Input.GetAxis("Vertical") * runSpeed)
}
moveDirection.y -= gravity;
cc.Move(moveDirection * Time.deltaTime)
}
//this should work not tested but should...let me know if you need me to explain
Your answer
Follow this Question
Related Questions
Implementing nav mesh into point and click movement 0 Answers
Object moving on its own 0 Answers
The name 'Joystick' does not denote a valid type ('not found') 2 Answers
Use of an AI script, and having it NOT go through walls using a character controller 0 Answers
how to make a rotating object move in a specific direction on press of a button? 2 Answers