x


controll acceleration with gui button

i have a script to control my airplan and i want to make it work with the iphone so i want to use gui buttons to accelerate i have the accelerationg script here how do i make it work with gui buttons

 //---------------------------- Speed ​​driving and flying / driving speed and flying ----------- -------------------------------------------------- ---
 
 / / Speed ​​| | Speed
 transform.Translate (0.0, speed/20 Time.deltaTime *);
 
 / / We need a minimum speed limit in the air. We again limit the variable groundtrigger.triggered
 / / We need a minimum speed limit in the air. We limit again with the variable groundtrigger.triggered
 
 / / Input to accelerate and decelerate on the ground | | and input Accellerate 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 to accelerate and decelerate in the air | | and input Accellerate 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;
 
 if (speed <0) speed = 0, / / ​​floating point calculations makes a fix Necessary So that speed can not be below zero
 / / Floating point calculation makes a fix may be necessary to speed not less than zero
 
 / / Another speed floating point fix:
 if speed = 700;
more ▼

asked Dec 25, 2011 at 04:46 AM

cubelord gravatar image

cubelord
31 19 14 17

(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

Check here for information about GUI Buttons

Following code is in C#, not JavaScript! Look at the link for JavaScript examples.

Basically you need a OnGui function which is like an update function but is specifically used to handle GUI elements in a 2D environment. GUI Elements will always render on top of scene elements.

When creating a button, you need to setup the x and y position, and the width and height of the button.

 Rect MyButton = new Rect(10, 10, 100, 30); // x, y, width, height
 if(GUI.Button(MyButton,"My Button") // and this is your if statement to create the button for a single action
 OR
 if(GUI.Button(new Rect(10, 10, 100, 30),"My Button") // this does the same without creating a variable for the button, if you didn't need to cache that information. I like to cache it so I can use it on arrays of buttons.

When creating a button, you can do tricks like scaling it to a portion of the screen size so that it will always be a particular size to the screen, useful for porting to multiple devices who have different screen size. Example:

 Rect ResizingButton = new Rect(screen.width*0.1, screen.height*0.1, screen width*0.3, screen height*0.15);

Heres some example code to get you started (Untested code in C#, check the link for a javascript version): Optimising your code a little, this is for acceleration. Write another "if(GUI.Button" for deceleration.

 void OnGUI()
 {
     if(GUI.Button(new Rect(10, 10, 100, 50),"Accelerate"))
     {
         if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) {speed += Time.deltaTime * 240;}
         else if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) {speed += Time.deltaTime * 240;}
     }
 }

Leave a comment and tell me if you're having trouble or if my answer didn't suit your needs.

more ▼

answered Dec 25, 2011 at 05:59 AM

Rabwin gravatar image

Rabwin
453 43 935 64

how do i make it on tap because i want this to work on the iphone

Dec 25, 2011 at 08:25 AM cubelord

and it gives me a few errors like expression denotes a value where a method is expected here is the final code

using UnityEngine; using System.Collections;

public class accelerate : MonoBehaviour {

 void OnGUI()

{ if(GUI.Button(new Rect(10, 10, 50, 50),"Accelerate")) { if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) + speed = Time.deltaTime 240; else if ((groundtrigger.triggered == 0) (Input.GetButton ("Fire1 "))&&( speed <800)) + speed = Time.deltaTime 240; } } }

Dec 25, 2011 at 09:04 AM cubelord

Unity codes GUI.Button to work for touches, but without using the code for handling multiple touches I think that won't work. You can check for multi-touch with this method (There are probably other ways but this is easiest):

Rect buttonArea = new Rect(10,10,100,50); foreach ( Touch touch in Input.touches) { if (touch.phase == TouchPhase.Began && buttonArea.Contains(touch.position)) { //Do stuff } }

I copy pasted the code directly from your question, try changing the if statements to this:

if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) {speed += Time.deltaTime * 240;}

I have also edited my answer in reply to this error. You may also want to change the values of acceleration whether on the ground or not, since they're the same in your quesiton or maybe you left it like that intentionally, just making sure.

Dec 25, 2011 at 12:54 PM Rabwin

ok now it gives me more errors when i put it in it tells me more errors can you put it into your editor and tell me where im going wrong cause this is the final code i get here

using UnityEngine; using System.Collections;

public class speed : MonoBehaviour {

 void OnGUI() {
     
 if(GUI.Button(new Rect(10, 10, 100, 50),"Accelerate"))
 {
     if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) {speed += Time.deltaTime * 240;}
     else if ((groundtrigger.triggered == 1) (Input.GetButton ("Fire1 "))&&( speed <800)) {speed += Time.deltaTime * 240;}
 }

     
 }

}

Dec 26, 2011 at 01:10 AM cubelord

can i send you my project through email and have u set up the controls like left right accelerate and i can put you down as co developer needed a partner anyway

Dec 26, 2011 at 06:24 AM cubelord
(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

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

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x5915
x4931
x2230
x81

asked: Dec 25, 2011 at 04:46 AM

Seen: 1516 times

Last Updated: Dec 26, 2011 at 10:03 AM