- Home /
Question by
Fred 4 · May 23, 2011 at 12:18 AM ·
javascriptinputcontrol
Control left + right = up
Hey guys, i'm making a project that i'm creating a physical control, when the user go left with your weight he press the button left, if he go right, he press right and if he press left + right he press up. I done a script but withous this, i need this because i have only 3 buttons on my project.
See the Script
var gameover=0;
static var airplaneangley: float=0.0;
//Rotaton and position of our airplane
var rotationx=0;
var rotationy=0;
var rotationz=0;
var positionx: float=0.0;
var positiony: float=0.0;
var positionz: float=0.0;
var speed:float =0.0;// speed variable is the speed
var uplift:float =0.0;
function Update () {
// shadow to the same angle than the airplane
airplaneangley= transform.eulerAngles.y;
// Maincode flying ----------------------------------------------------------------------------------------------------------------------------------
// Code is active when varwhatmoves is 1
if(gameover==0){
// Rotations of the airplane
if (speed>595)transform.Rotate(Input.GetAxis("Vertical")*Time.deltaTime*100,0,0); // Up Down, limited to a minimum speed
transform.Rotate(0,Input.GetAxis("Horizontal")*Time.deltaTime*100,0,Space.World); // Left Right
if (groundtrigger.triggered==0) transform.Rotate(0,0,Input.GetAxis("Horizontal")*Time.deltaTime*50*-1); // Tilt multiplied with minus 1 to go into the right direction
//limit tilt so that airplane doesn`t fly a roll while flying a curve
if ((Input.GetAxis ("Horizontal")<0)&&(rotationz >45)&&(rotationz <90)) transform.Rotate(0,0,Time.deltaTime*-50);// the left
if ((Input.GetAxis ("Horizontal")>0)&&(rotationz <315)&&(rotationz >270)) transform.Rotate(0,0,Time.deltaTime*50);// the right
// Speed
transform.Translate(0,0,speed/20*Time.deltaTime);
// Turn variables to rotation and position of the object
rotationx=transform.eulerAngles.x;
rotationy=transform.eulerAngles.y;
rotationz=transform.eulerAngles.z;
positionx=transform.position.x;
positiony=transform.position.y;
positionz=transform.position.z;
//Rotate back in z axis , limited by no horizontal button pressed
if ((rotationz >0) && (rotationz < 90)&&(!Input.GetButton ("Horizontal"))) transform.Rotate(0,0,Time.deltaTime*-50);
if ((rotationz >0) && (rotationz > 270)&&(!Input.GetButton ("Horizontal"))) transform.Rotate(0,0,Time.deltaTime*50);
if ((rotationz >180) && (rotationz < 270)&&(!Input.GetButton ("Horizontal"))) transform.Rotate(0,0,Time.deltaTime*-50);
if ((rotationz <180) && (rotationz > 90)&&(!Input.GetButton ("Horizontal"))) transform.Rotate(0,0,Time.deltaTime*50);
// Rotate back X axis
if ((rotationx >0) && (rotationx < 180)&&(!Input.GetButton ("Vertical"))) transform.Rotate(Time.deltaTime*-50,0,0);
if ((rotationx >0) && (rotationx > 180)&&(!Input.GetButton ("Vertical"))) transform.Rotate(Time.deltaTime*50,0,0);
//Speed driving and flying ------------------------------------------------------------------------------------------
//We need a minimum speed limit in the air. We limit again with the groundtrigger.triggered variable
// Input Accellerate and deccellerate at ground
if ((groundtrigger.triggered==1)&&(Input.GetButton("Fire1"))&&(speed<800)) speed+=Time.deltaTime*240;
if ((groundtrigger.triggered==1)&&(Input.GetButton("Fire2"))&&(speed>0)) speed-=Time.deltaTime*240;
// Input Gas geben und abbremsen in der Luft|| Input Accellerate and deccellerate in the air
if ((groundtrigger.triggered==0)&&(Input.GetButton("Fire1"))&&(speed<800)) speed+=Time.deltaTime*240;
if ((groundtrigger.triggered==0)&&(Input.GetButton("Fire2"))&&(speed>600)) speed-=Time.deltaTime*240;
//When we don`t accellerate or deccellerate we want to go to a neutral speed in the air. With this speed it has to stay at a neutral height. Above this value the airplane has to climb, with a lower speed it has to sink. That way we are able to takeoff and land then.
// Neutral speed at 700
// Maximum 800, minimum 600
//This code resets the speed to 700 when there is no acceleration or deccelleration. Maximum 800, minimum 600
if((Input.GetButton("Fire1")==false)&&(Input.GetButton("Fire2")==false)&&(speed>595)&&(speed<700)) speed+=Time.deltaTime*240;
if((Input.GetButton("Fire1")==false)&&(Input.GetButton("Fire2")==false)&&(speed>595)&&(speed>700)) speed-=Time.deltaTime*240;
transform.Translate(0,uplift*Time.deltaTime/10.0,0);
// Calculate uplift
uplift = -700+speed;
//We don`t want downlift. So when the uplift value lower zero we set it to 0 if ((groundtrigger.triggered==1)&&(uplift < 0)) uplift=0; } }
Comment