Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 Jun 22
sparklines
Close Help
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
0
Question by xDarkLord01x · Apr 20, 2017 at 05:26 PM · script.charactercontroller

How would change xbox controlls to the keyboard in a script?

I'm trying to build a flight simulator, and i downloaded an asset for flight controls but the controls are scripted to use an xbox one controller. I can use keybord controls, but i don't know how to change the script to use the keyboard and apply those changes to the input manager.

Here is the script from the asset:

using UnityEngine; using System.Collections;

public class SPARTA_PLANE_SCRIPT : MonoBehaviour {

 //OBJECTS TO GET REGARDING THE SPARTA AIRPLANE

 private GameObject spartacannon1, spartacannon2,  plane_camera_parent;
 private Animator spartacannonanim1, spartacannonanim2, anim;
 private AudioSource plane_audio;
 //CONTROLLER VARIABLES

 private bool  dpad_down_ready,xbutton_ready,is_flying, is_accelerating;
 private int  xbutton_current, dpad_down_select;
 private float forward_speed,stall_speed, forward_constant, dpad_down_current, dpad_down_delaytime, 
             plane_enginesound_pitch, plane_pitch_volume;
 private float gyroX, gyroY, roll_speed, pitch_speed, yaw_speed, gyromultiX, gyromultiY, gyrotiming, exaustfloat, 
 delaytime_forcannonweapondoor, verticalaxis_pos, horizontalaxis_pos, max_speed;
 //CAMERA VARIABLES

 private Vector3 temp;
 private float plane_rot_X, plane_rot_Y, plane_rot_Z, right_stick_horizontal, right_stick_vertical, camera_multiplier;


 // Use this for initialization
 void Start () {
     spartacannon1 = GameObject.Find ("SPARTA CANNON ANIMATED");
     spartacannon2 = GameObject.Find ("SPARTA CANNON ANIMATED (1)");
     plane_camera_parent = GameObject.Find ("sparta plane main camera parent object");
     anim = gameObject.GetComponentInChildren<Animator> ();
     spartacannonanim1 = spartacannon1.GetComponentInParent<Animator> ();
     spartacannonanim2 = spartacannon2.GetComponentInParent<Animator> ();
     plane_audio = gameObject.GetComponent<AudioSource> ();


     roll_speed = 0.0f;
     pitch_speed = 0.0f;
     yaw_speed = 0.0f;
     gyrotiming = 0;
     exaustfloat = 0.0f;
     delaytime_forcannonweapondoor = 0.0f;
      
     forward_speed = 0.0f;
     forward_constant = 0.0f;
     verticalaxis_pos = 0.0f; horizontalaxis_pos = 0.0f;
     max_speed = -0.5f;
     stall_speed = -0.15f;
     is_flying = false;

     dpad_down_delaytime = 0.0f;
     dpad_down_current = 0.0f;
     dpad_down_ready = true;
     dpad_down_select = 0;

     xbutton_current = 0;
     xbutton_ready = true;

     plane_pitch_volume = 0.200f;
     plane_enginesound_pitch = 1.0f;
     is_accelerating = false;


 }
 
 // Update is called once per frame

 void Update () {
     xboxOneControllerUpdate ();
     plane_camera_class ();


 }
 void xboxOneControllerUpdate(){//THIS WORKS WITH THE XBOX ONE CONTROLLER ON PC
     

//ROLL AND PITCH

     transform.Rotate (roll_speed, yaw_speed, pitch_speed);
     horizontalaxis_pos = Input.GetAxis ("Horizontal");//reference
     verticalaxis_pos = Input.GetAxis ("Vertical");//reference
     gyroY = horizontalaxis_pos;//this controls animation of rolling wing flaps
     gyroX = verticalaxis_pos;  //        ||
     roll_speed = horizontalaxis_pos * 2.0f;//this controls the plane rotation ingame
     pitch_speed = verticalaxis_pos;//        ||
     gyrotiming += 1 * Time.deltaTime;//<- THIS IS TO CONTROL SURFACES FLICKERING BY SMOOTHING THE MOVEMENTS.
     if (gyrotiming > 0.05f) {
         anim.SetFloat ("SPARTA PLANE PITCH FLOAT", gyroX);
         anim.SetFloat ("SPARTA PLANE ROLL FLOAT", gyroY);

//THIS IS TO CONTROL FLAPS DOWN IF THE AIRCRAFT IS GOING SLOW IE WHEN ITS GOING TO LAND OR TO PROMOTE LIFT

         if (forward_speed > stall_speed) {
                 anim.SetBool ("SPARTA PLANE IF FLYING FAST", false);
             } else {
                 anim.SetBool ("SPARTA PLANE IF FLYING FAST", true);
             }//ends here

//THIS IS TO PREVENT INPUT FROM GOING ABOVE 1

         if (gyroX > 1) {
             gyroX = 1;
         }
         if (gyroX < -1) {
             gyroX = -1;
         }
         if (gyroY > 1) {
             gyroY = 1;
         }
         if (gyroY < -1) {
             gyroY = -1;
         }
         gyrotiming = 0;
     }

//THIS IS FOR THE WEAPONS DOOR

     if ((Input.GetButtonDown ("xbox x button"))&&(xbutton_current == 0)&&(xbutton_ready)) {//this simulate tapping when weapons door are closed
         xbutton_current = 1;
         xbutton_ready = false;
     } 
     if ((Input.GetButtonDown ("xbox x button"))&&(xbutton_current == 1)&&(xbutton_ready)) {//this simulate tapping when weapons door are opened
         xbutton_current = 0;
         xbutton_ready = false;
     }
     if (!Input.GetButton ("xbox x button")) {
         xbutton_ready = true;
     }
     delaytime_forcannonweapondoor -= 0.1f;
     if ((Input.GetButton("xbox x button"))&&(xbutton_current == 1)) {//THIS OPEN WEAPONS DOOR
         anim.SetBool ("SPARTA PLANE WEAPONS DOOR BOOL", true);
         spartacannonanim1.SetBool ("SPARTA CANNON BOOL", true);
         spartacannonanim2.SetBool ("SPARTA CANNON BOOL", true);
         delaytime_forcannonweapondoor = 0.5F;
     }
     if ((Input.GetButton("xbox x button"))&&(xbutton_current == 0)) {//THIS CLOSE WEAPONS DOOR
         
         if (delaytime_forcannonweapondoor < 0.0F) {
             anim.SetBool ("SPARTA PLANE WEAPONS DOOR BOOL", false);
             spartacannonanim1.SetBool ("SPARTA CANNON BOOL", false);
             spartacannonanim2.SetBool ("SPARTA CANNON BOOL", false);
             delaytime_forcannonweapondoor = 0;
         }
     }
 
         

//THIS IS FOR YAW //THIS IS FOR YAW

     if (Input.GetButton("xbox left bumper")) {
         anim.SetBool ("SPARTA PLANE YAW LEFT BOOL", true);
         yaw_speed = -0.2f;
         } else {
                 anim.SetBool ("SPARTA PLANE YAW LEFT BOOL", false);
                 
         }
     if (Input.GetButton("xbox right bumper")) {
         anim.SetBool ("SPARTA PLANE YAW RIGHT BOOL", true);
         yaw_speed = 0.2f;
         } else {
                 anim.SetBool ("SPARTA PLANE YAW RIGHT BOOL", false);
                 
         }
     if ((!Input.GetButton("xbox left bumper"))&&(!Input.GetButton("xbox right bumper"))){
         yaw_speed = 0.0f;
     }
 

//THIS CONTROL EXAUST

     //this controls the exaust by using the "exaustfloat" timing
     if (Input.GetButton ("xbox y button")) {
         if (exaustfloat < 2.0f) {
             exaustfloat += 0.1f;
         }
     } else {
         if (exaustfloat > 0.1f) {
             exaustfloat -= 0.2f;
         }
     }
     if (exaustfloat > 1.3f) {
         anim.SetBool ("SPARTA PLANE EXAUST BOOL", true);
     }
     if (exaustfloat < 1.3f) {
         anim.SetBool ("SPARTA PLANE EXAUST BOOL", false);
     }

//THIS IS FOR CONTROLLING TRUST //THIS IS TO CONTROL PLANE SPEED

     forward_speed += forward_constant * Time.deltaTime;
     transform.Translate (forward_speed, 0, 0);
     if (forward_speed < -0.08f) {//this will make the plane go is_flying true to go to "is actually flying and not to go to landing mode".
         is_flying = true;
     }
     if (is_flying) {//this will control the plane from going slower than stall speed to full stop in mid air.
         if (forward_speed > -0.08f) {
             forward_speed = -0.08f;
         }
     }

     if (forward_speed < max_speed) {//this prevent/controls the plane from going beyond set max speed
         forward_speed = max_speed;
     }
     if (forward_speed > 0.0f) {//this prevents the plane from going backward :P
         forward_speed = 0.0f;
     }
     if ((Input.GetButton ("xbox a button")) && (forward_speed < 0.08f)) {//backward or brake
         
         forward_constant += 0.0005f;
         is_accelerating = false;
     }
     
     if ((Input.GetButton ("xbox y button")) && (forward_speed > max_speed)) {//forward
         
         forward_constant -= 0.001f;
         is_accelerating = true;
     }
     if ((!Input.GetButton ("xbox a button")) && (!Input.GetButton ("xbox y button"))) {
         forward_constant = 0; is_accelerating = false;
         if (forward_speed < 0.0f) {//this will slow it down simulating air drag
             forward_speed += 0.0001f;//this is the rate at which is slowing down
         }

     }

//THIS IS FOR CONTROLLING LANDING GEAR

     dpad_down_current = Input.GetAxis ("Dpad down button");
     if (dpad_down_delaytime > 0.0f) {//this controls the delay time from wheels up and down so it wont be toggle in half way
         dpad_down_delaytime -= 0.02f;
     }
     if ((dpad_down_delaytime <= 0.0f)&&(dpad_down_current == 0)) {//this variables gives the ok to toggle wheel up and down
         dpad_down_ready = true;
     }


     if ((dpad_down_current == -1)&&(dpad_down_ready)&&(dpad_down_select == 0)){//THIS CLOSES LANDING WHEELS
         anim.SetBool ("SPARTA PLANE WHEELS BOOL", false);
         dpad_down_ready = false;
         dpad_down_select = 1;
         dpad_down_delaytime = 1.0f;
     }
     if ((dpad_down_current == -1)&&(dpad_down_ready)&&(dpad_down_select == 1)){//THIS OPENES LANDING WHEELS
         anim.SetBool ("SPARTA PLANE WHEELS BOOL", true);
         dpad_down_ready = false;
         dpad_down_select = 0;
         dpad_down_delaytime = 1.0f;
     }

//ENGINE SOUND //ENGINE SOUND

     plane_audio.pitch = plane_enginesound_pitch + 1.0f;
     plane_audio.volume = plane_pitch_volume;
     if (is_flying) {
         
         if (is_accelerating){//this accelerates engine noise to match with accelerate button
             if (plane_enginesound_pitch < 2.10f) {
                 plane_enginesound_pitch += 0.8f * Time.deltaTime;
             }
         }
         if (is_accelerating == false) {//this decelerate engine noise to match with deceleration button
             if (plane_enginesound_pitch > 1.5f) {
                 plane_enginesound_pitch -= 0.8f * Time.deltaTime;
             }
         }
     }


}

//CAMERA CLASS

 void plane_camera_class(){
     camera_multiplier = 179;
     right_stick_horizontal = camera_multiplier * Input.GetAxis ("Horizontal right stick");
     right_stick_vertical = camera_multiplier * Input.GetAxis ("Vertical right stick");

     plane_rot_X = transform.eulerAngles.x;
     plane_rot_Y = transform.eulerAngles.y;
     plane_rot_Z = transform.eulerAngles.z;


     temp = new Vector3 (transform.localPosition.x, transform.localPosition.y, transform.localPosition.z);
     plane_camera_parent.transform.position = temp;
     plane_camera_parent.transform.eulerAngles = new Vector3 (plane_rot_X,right_stick_horizontal += plane_rot_Y,right_stick_vertical += plane_rot_Z);

 }
 void reset_plane(){//this class hold all the needed parameters to reset the plane to its starting point with 0 speed.
     forward_speed = 0.0f;
     is_flying = false;
     gameObject.transform.position = new Vector3 (203,55,180);
     gameObject.transform.eulerAngles = new Vector3 (0, 0, 0);
 }
 void OnCollisionEnter(Collision col){
     
         gameObject.GetComponent<Rigidbody> ().isKinematic = true;//this will stop all physics movement from collision to bring the plane to a halt
         reset_plane ();//this resets the plane to starting point
         gameObject.GetComponent<Rigidbody> ().isKinematic = false;//this will resume all movements.
         //the plane mesh collider must stay with convex checked and rigidbody iskinematic unchecked for it to collide with the terrain


 }
 void OnCollisionStay(Collision col){



 }
 void OnCollisionExit(Collision col){


 }

}

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
â–¼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this Question

Answers Answers and Comments

3 People are following this question.

avatar image avatar image avatar image

Related Questions

can anyone help me to smooth the jump? 0 Answers

Character controller (3d) don´t move whith a moving platform. 1 Answer

How do I change the scale character for flip his face,How do I change the scale of character for flip his face 0 Answers

First Person Controller Scripts Are Not Working! 1 Answer

Why my character moves left when i press right key ? Controls are upside down? 2 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges