- Home /
I need Help With a Speed up script
I want my character to have a speed up boost when ever he inputs left shift but it only lasts for a few seconds and cant be used again for 10 seconds. There is also a Gui texture that is supposed to appear when its ready to be used.
Here is the script i used but the Gui texture does not work right.
var speed= 40.0; var rotateSpeed = 3.0; var runningSpeed= 10.0; var strafeSpeed = 40; var savedTime=0; var GUI1 : GUITexture;
function Update () {
var seconds : int = Time.time;
var oddeven = (seconds % 2);
if(oddeven)
{
Shoot(seconds);
}
}
function Start(){ GUI1.enabled = false; }
function Shoot(seconds){
GUI1.enabled = true;
if (Input.GetKey("left shift")){ if(seconds!=savedTime){ var controller : CharacterController = GetComponent(CharacterController); //transform.Rotate(0, Input.GetAxis ("Horizontal") rotateSpeed, 0); var forward = transform.TransformDirection(Vector3.forward); var curSpeed = speed Input.GetAxis ("Vertical"); controller.SimpleMove(forward * curSpeed); } } }
Please make sure you format all code snippets using the button labeled: "101010"
Answer by GuyTidhar · Jul 18, 2011 at 06:29 AM
Here is an option:
var speed : float = 40.0;
var rotateSpeed : float = 3.0;
var runningSpeed : float = 10.0;
var strafeSpeed : float = 40;
var GUI1 : GUITexture;
var speedUpTime : float = 5; // How long do you have a speed boost
var speedUpFactor : float = 1;
var controller : CharacterController;
function Start()
{
controller = GetComponent(CharacterController);
GUI1.enabled = true;
}
function Update ()
{
if ( GUI1.enabled && Input.GetKey("left shift") )
{
StartCoroutine(EnableShiftAfterAWhile());
StartCoroutine(SpeedUpForAWhile());
}
// Put here you movement processing
transform.Rotate(0, Input.GetAxis ("Horizontal") * rotateSpeed, 0);
var forward = transform.TransformDirection(Vector3.forward);
// You current speed should be effected by the speedFactor
var curSpeed = speed * Input.GetAxis ("Vertical") * speedUpFactor;
controller.SimpleMove(forward * curSpeed);
}
function SpeedUpForAWhile()
{
speedUpFactor = 2; // Move twice as fast
yield WaitForSeconds(speedUpTime);
speedUpFactor = 1; // Regular move speed
}
function EnableShiftAfterAWhile()
{
GUI1.enabled = false;
yield WaitForSeconds(10);
// Once the time wait time has passed you can re-enable the gui (and shift...)
GUI1.enabled = true;
}