Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 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 leandroreschke · Feb 13, 2014 at 02:48 PM · guibuttonfpsjumpguitexture

Problem with GUITexture upon another

So i have a large touchpad GUITexture on half of screen, in the right side, with Z=0, and i have a button(Turn on and off a flashlight) in the same side with Z=1. When i touch the button, the touchpad GUITexture react too, but was supposed to not. The touchpad has a jump trigger when i tap 2 times fast, so when i tap 2 times the button, the touchpad behind makes me jump, how i can combat this?

Here is the FPSControl(TouchPad) code: using UnityEngine; using System.Collections;

 [RequireComponent (typeof (CharacterController))]
 
 public class FPSController : MonoBehaviour {
 // This script must be attached to a GameObject that has a CharacterController
 
     public Joystick moveTouchPad;
     public Joystick rotateTouchPad;    // If unassigned, tilt is used
 
     public Transform cameraPivot; // The transform used for camera rotation
 
     public float forwardSpeed = 4f;
     public float backwardSpeed = 1f;
     public float sidestepSpeed = 1f;
     public float jumpSpeed = 8f;
     public float inAirMultiplier = 0.25f;                    // Limiter for ground speed while jumping
     public Vector2 rotationSpeed = new Vector2( 50, 25 );    // Camera rotation speed for each axis
     public float tiltPositiveYAxis = 0.6f;
     public float tiltNegativeYAxis = 0.4f;
     public float tiltXAxisMinimum = 0.1f;
 
     private Transform thisTransform;
     private CharacterController character;
     private Vector3 cameraVelocity;
     private Vector3 velocity;                        // Used for continuing momentum while in air
     private bool canJump = true;
 
     // Use this for initialization
     void Start () 
     {
 
         thisTransform = GetComponent<Transform>();
         character = GetComponent<CharacterController>();
 
 
         // Move the character to the correct start position in the level, if one exists
         var spawn = GameObject.Find( "PlayerSpawn" );
         if (spawn)
             thisTransform.position = spawn.transform.position;
     }
 
     void OnEndGame()
     {
         // Disable joystick when the game ends    
         moveTouchPad.Disable();
         
         if (rotateTouchPad)
             rotateTouchPad.Disable();    
         
         // Don't allow any more control changes when the game ends
         this.enabled = false;
     }
 
     // Update is called once per frame
     void Update () 
     {        
         Vector3 movement = thisTransform.TransformDirection( new Vector3( moveTouchPad.position.x, 0, moveTouchPad.position.y ) );
         
         // We only want horizontal movement
         movement.y = 0;
         movement.Normalize();
         
         // Apply movement from move joystick
         Vector2 absJoyPos = new Vector2( Mathf.Abs( moveTouchPad.position.x ), Mathf.Abs( moveTouchPad.position.y ) );    
         if ( absJoyPos.y > absJoyPos.x )
         {
             if ( moveTouchPad.position.y > 0 )
                 movement *= forwardSpeed * absJoyPos.y;
             else
                 movement *= backwardSpeed * absJoyPos.y;
         }
         else
             movement *= sidestepSpeed * absJoyPos.x;        
         
         // Check for jump
         if ( character.isGrounded )
         {        
             bool jump = false;
             Joystick touchPad;
             if ( rotateTouchPad )
                 touchPad = rotateTouchPad;
             else
                 touchPad = moveTouchPad;
             
             if (!touchPad.isFingerDown)
                 canJump = true;
             
             if (canJump && touchPad.tapCount >= 2 )
             {
                 jump = true;
                 canJump = false;
             }    
             
             if ( jump )
             {
                 // Apply the current movement to launch velocity        
                 velocity = character.velocity;
                 velocity.y = jumpSpeed;    
             }
         }
         else
         {            
             // Apply gravity to our velocity to diminish it over time
             velocity.y += Physics.gravity.y * Time.deltaTime;
             
             // Adjust additional movement while in-air
             movement.x *= inAirMultiplier;
             movement.z *= inAirMultiplier;
         }
         
         movement += velocity;    
         movement += Physics.gravity;
         movement *= Time.deltaTime;
         
         // Actually move the character    
         character.Move( movement );
         
         if ( character.isGrounded )
             // Remove any persistent velocity after landing    
             velocity = Vector3.zero;
         
         // Apply rotation from rotation joystick
         if ( character.isGrounded )
         {
             var camRotation = Vector2.zero;
             
             if ( rotateTouchPad )
                 camRotation = rotateTouchPad.position;
             else
             {
                 // Use tilt instead
                 //            print( iPhoneInput.acceleration );
                 var acceleration = Input.acceleration;
                 var absTiltX = Mathf.Abs( acceleration.x );
                 if ( acceleration.z < 0 && acceleration.x < 0 )
                 {
                     if ( absTiltX >= tiltPositiveYAxis )
                         camRotation.y = (absTiltX - tiltPositiveYAxis) / (1 - tiltPositiveYAxis);
                     else if ( absTiltX <= tiltNegativeYAxis )
                         camRotation.y = -( tiltNegativeYAxis - absTiltX) / tiltNegativeYAxis;
                 }
                 
                 if ( Mathf.Abs( acceleration.y ) >= tiltXAxisMinimum )
                     camRotation.x = -(acceleration.y - tiltXAxisMinimum) / (1 - tiltXAxisMinimum);
             }
             
             camRotation.x *= rotationSpeed.x;
             camRotation.y *= rotationSpeed.y;
             camRotation *= Time.deltaTime;
             
             // Rotate the character around world-y using x-axis of joystick
             thisTransform.Rotate( 0, camRotation.x, 0, Space.World );
             
             // Rotate only the camera with y-axis input
             cameraPivot.Rotate( -camRotation.y, 0, 0 );
 
         }
     }
 }

The flashlight on off button use hittest in the GUITexture.

Comment
Add comment · Show 2
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
avatar image KiraSensei · Feb 13, 2014 at 03:18 PM 0
Share

How do you catch the collision between the touch and the texture ? With a raycast ?

avatar image leandroreschke · Feb 13, 2014 at 03:23 PM 0
Share

I will update my answer with the code of the joystick, is penelope C#.

$$anonymous$$y button use hittest, the touchpad covering the screen not.

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by NickP_2 · Feb 13, 2014 at 03:18 PM

Did you try a hit test? Explained here

Comment
Add comment · Show 1 · Share
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
avatar image leandroreschke · Feb 13, 2014 at 03:25 PM 0
Share

I will update my answer with the code of the joystick, is penelope C#.

$$anonymous$$y button use hittest, the touchpad covering the screen not.

I tried hittest in the touchpad, the problem is that when i hit the rotation touchpad and the move touchpad, they become confused. Using Penelope script that i converted from java to C#, the controlls run smooth, the problem is that it recognize my hittest from the flashlightbutton, just like my finger goes through the button and hit the touchpad too.

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

20 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

Move GUI elements. 0 Answers

Reduce Draw call for Multiple GUI Textures with same Texture 1 Answer

GUI button to NGUI button ? 1 Answer

Overlapping GUITexture UI Buttons 2 Answers

Resizing multiple GUI Textures to remain together 0 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