Hi to all , I want that the superspeed must work without pressing two buttons the forward and the space button but only 1 button only with space key . and I want also that the ball player must be pushed forward automatically when I hit the key space , how i can fix this script ?
// speed of the ball
var speed = 5.0;
var superspeed = 10.0;
var radius = 1.0;
private var velocity : Vector3 = Vector3.zero;
function Start(){
transform.localScale = Vector3.one * radius * 2;
var hit : RaycastHit;
if(Physics.Linecast(transform.position, transform.position - Vector3.up * 500, hit)){
transform.position = hit.point + Vector3.up * radius;
}
// add a rigidbody if we dont have one.
if(!rigidbody)
gameObject.AddComponent(Rigidbody);
// set the mass according to the radius.
rigidbody.mass = 50 * radius;
}
function FixedUpdate () {
// let see if our body is on the ground.
if(Input.GetKeyDown("space"))
{
speed = superspeed;
}
else
{
speed = 5.0;
}
var hit : RaycastHit;
var isGrounded = Physics.Raycast(transform.position, -Vector3.up, hit, radius * 1.5);
// base movement off of the camera, not the object.
// reset the camera's X to zero, so that it is always looking horizontally.
var x = Camera.main.transform.localEulerAngles.x;
Camera.main.transform.localEulerAngles.x = 0;
// now collect the movement stuff This is generic direction.
var direction = Vector3(Input.GetAxis("Horizontal"),0,Input.GetAxis("Vertical"));
// prevent the ball from moving faster diagnally
if(direction.magnitude > 1.0) direction.Normalize();
// If we are grounded, then lets see if we want to jump.
if(isGrounded && Input.GetKeyDown(KeyCode.Space))
rigidbody.AddForce(Vector3.up * rigidbody.mass * 50);
// if we arent pressing anything, dont mess with the physics.
if(direction.magnitude > 0){
// convert isGrounded into something we can use
var modifier = isGrounded ? 3.0 : 0.5;
// lets set the direction according to the camera now.
direction = Camera.main.transform.TransformDirection(direction) * speed * 2;
// lets take the downward velocity from the current so that we dont get wierd physics results
direction.y = rigidbody.velocity.y;
// Now, lets keep track of a velocity.
// This will let the ball move while we are not pressing anything.
rigidbody.velocity = Vector3.Lerp(rigidbody.velocity, direction, modifier * Time.deltaTime);
// Now, lets break the rotation out from the movement.
var rotation = Vector3(rigidbody.velocity.z,0,-rigidbody.velocity.x) * 20;
// Lets add some spin to make the ball move better
rigidbody.angularVelocity = Vector3.Lerp(rigidbody.angularVelocity, rotation, modifier * Time.deltaTime);
}
// return the camera's x rotation.
Camera.main.transform.localEulerAngles.x = x;
}