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 Nikki_heley · Jun 17, 2018 at 08:50 AM · inputmobilenotworking

Mobile input is not working ...

Hello guys i have a problem in my script i am making a cube rolling with arrow keys in unity ...but when i change it in drag system (mobile input or click drag) it is not working ....i want it to drag in X and Y axis .....i am not familiar with unity...check out my error part..

void Update () {

  float x = 0;
  float y = 0;
  
  
  x = Input.GetAxisRaw ("Horizontal");
  if (x == 0) {
      y = Input.GetAxisRaw ("Vertical");
  }
 
 
  if ((x != 0 || y != 0) && !isRotate) {
      directionX = y;                                                                
      directionZ = x;                                                                
      startPos = transform.position;                                                
      fromRotation = transform.rotation;                                            
      transform.Rotate (directionZ * 90, 0, directionX * 90, Space.World);    
      toRotation = transform.rotation;                                            
      transform.rotation = fromRotation;                                            
      rotationTime = 0;                                                            
      isRotate = true;                                                            
  }

}

Check my mistake plzz ..

@NoDumbQuestion

@Bunny83

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 Zgull · Jun 17, 2018 at 12:08 PM 0
Share

Are both x and y values 0?

avatar image Nikki_heley Zgull · Jun 17, 2018 at 12:53 PM 0
Share

Yes both are 0 ...

1 Reply

· Add your reply
  • Sort: 
avatar image
0
Best Answer

Answer by Zgull · Jun 17, 2018 at 01:09 PM

Follow these steps to get the exact issue.
1) Use Log to check if both "Input.GetAxisRaw ("Horizontal");" and "Input.GetAxisRaw ("Vertical");" always gives you "0".
2) On a mobile device, tilting your phone changes these values. On the editor, the arrow keys changes the values.
3) If both are zero, try and use "Input.acceleration.x" instead of "Input.GetAxisRaw ("Horizontal");" and "Input.acceleration.y" instead of "Input.GetAxisRaw ("Vertical");". Note if it works.
I hope you are changing the value of "isRotate" at some point after setting it to "true". Otherwise you wouldn't be able to see any changes, as the values are applied only once.

I have added the full code. You can modify it as you want.
using UnityEngine;
using System.Collections;
using System;

public class CubeController : MonoBehaviour {

 public float rotationPeriod = 0.3f;
 public float sideLength = 1f;

 bool isRotate = false;
 float directionX = 0;
 float directionZ = 0;

 Vector3 startPos;
 float rotationTime = 0;
 float radius;
 Quaternion fromRotation;
 Quaternion toRotation;

 float x,y;
 public float minSwipeDistY = 1;
 public float minSwipeDistX = 1;
 private Vector3 touchStartPos;

 // Use this for initialization
 void Start()
 {


     radius = sideLength * Mathf.Sqrt(2f) / 2f;

 }

 // Update is called once per frame
 void Update()
 {
     #if UNITY_EDITOR || UNITY_STANDALONE
     x = Input.GetAxisRaw("Horizontal");
     if (x == 0)
     {
         y = Input.GetAxisRaw("Vertical");
     }
     #else
     DetectSwipe();
     #endif

     if ((x != 0 || y != 0) && !isRotate)
     {
         directionX = y;
         directionZ = x;
         startPos = transform.position;
         fromRotation = transform.rotation;
         transform.Rotate(directionZ * 90, 0, directionX * 90, Space.World);

         toRotation = transform.rotation;
         transform.rotation = fromRotation;
         rotationTime = 0;
         isRotate = true;
     }
 }

 void FixedUpdate()
 {

     if (isRotate)
     {

         rotationTime += Time.fixedDeltaTime;
         float ratio = Mathf.Lerp(0, 1, rotationTime / rotationPeriod);


         float thetaRad = Mathf.Lerp(0, Mathf.PI / 2f, ratio);
         float distanceX = -directionX * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));

         float distanceY = radius * (Mathf.Sin(45f * Mathf.Deg2Rad + thetaRad) - Mathf.Sin(45f * Mathf.Deg2Rad));

         float distanceZ = directionZ * radius * (Mathf.Cos(45f * Mathf.Deg2Rad) - Mathf.Cos(45f * Mathf.Deg2Rad + thetaRad));
         transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);


         transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio);


         if (ratio == 1)
         {
             isRotate = false;
             directionX = 0;
             directionZ = 0;
             rotationTime = 0;
         }
     }
 }

 void DetectSwipe()
 {
     x = y = 0;
     if (Input.touchCount > 0) 
     {
         Touch touch = Input.touches[0];

         switch (touch.phase)
         {
         case TouchPhase.Began:
             touchStartPos = touch.position;
             break;

         case TouchPhase.Ended:
             float swipeDistVertical = (new Vector3(0, touch.position.y, 0) - new Vector3(0, touchStartPos.y, 0)).magnitude;
             if (swipeDistVertical > minSwipeDistY)
             {
                 float swipeValue = Mathf.Sign(touch.position.y - touchStartPos.y);
                 y = swipeValue;
                 /*if (swipeValue > 0)//up swipe
                     Jump ();
                 else if (swipeValue < 0)//down swipe
                     Shrink ();*/
             }

             float swipeDistHorizontal = (new Vector3(touch.position.x,0, 0) - new Vector3(touchStartPos.x, 0, 0)).magnitude;

             if (swipeDistHorizontal > minSwipeDistX)
             {
                 float swipeValue = Mathf.Sign(touch.position.x - touchStartPos.x);
                 x = swipeValue;
                 /*if (swipeValue > 0)//right swipe
                     MoveRight ();
                 else if (swipeValue < 0)//left swipe
                     MoveLeft ();*/
             }
             break;
         }
     }
 }

}

Comment
Add comment · Show 15 · 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 Nikki_heley · Jun 17, 2018 at 01:19 PM 0
Share

Thanks buddy i appreciate your answer but the problem is mobile input this script is only working with arrows keys... i don't know how to change it in mobile input like drag system .. (similar to Edge game)...i will show you my whole script...this whole script sits on a cube which is rolling perfectly with arrow keys..may be we have to change Horizontal and vertical in the script can you help me plzz..

 public float rotationPeriod = 0.3f;        
 public float sideLength = 1f;            
 
 bool isRotate = false;                    
 float directionX = 0;                    
 float directionZ = 0;                    
 
 Vector3 startPos;                        
 float rotationTime = 0;                    
 float radius;                            
 Quaternion fromRotation;                
 Quaternion toRotation;                    
 
 // Use this for initialization
 void Start () {
 
     
     radius = sideLength * $$anonymous$$athf.Sqrt (2f) / 2f;
 
 }
 
 // Update is called once per frame
 void Update () {
 
     float x = 0;
     float y = 0;
     
 
     x = Input.GetAxisRaw ("Horizontal");
     if (x == 0) {
         y = Input.GetAxisRaw ("Vertical");
     }
 
 
     
     if ((x != 0 || y != 0) && !isRotate) {
         directionX = y;                                                                
         directionZ = x;                                                                
         startPos = transform.position;                                                
         fromRotation = transform.rotation;                                            
         transform.Rotate (directionZ * 90, 0, directionX * 90, Space.World);        

         toRotation = transform.rotation;                                            
         transform.rotation = fromRotation;                                            
         rotationTime = 0;                                                            
         isRotate = true;                                                            
     }
 }
 
 void FixedUpdate() {
 
     if (isRotate) {
 
         rotationTime += Time.fixedDeltaTime;                                    
         float ratio = $$anonymous$$athf.Lerp(0, 1, rotationTime / rotationPeriod);            
 
         
         float thetaRad = $$anonymous$$athf.Lerp(0, $$anonymous$$athf.PI / 2f, ratio);                    
         float distanceX = -directionX * radius * ($$anonymous$$athf.Cos (45f * $$anonymous$$athf.Deg2Rad) - $$anonymous$$athf.Cos (45f * $$anonymous$$athf.Deg2Rad + thetaRad));        

         float distanceY = radius * ($$anonymous$$athf.Sin(45f * $$anonymous$$athf.Deg2Rad + thetaRad) - $$anonymous$$athf.Sin (45f * $$anonymous$$athf.Deg2Rad));                        

         float distanceZ = directionZ * radius * ($$anonymous$$athf.Cos (45f * $$anonymous$$athf.Deg2Rad) - $$anonymous$$athf.Cos (45f * $$anonymous$$athf.Deg2Rad + thetaRad));            
         transform.position = new Vector3(startPos.x + distanceX, startPos.y + distanceY, startPos.z + distanceZ);                        


 
         
         transform.rotation = Quaternion.Lerp(fromRotation, toRotation, ratio);        
 
         
         if (ratio == 1) {
             isRotate = false;
             directionX = 0;
             directionZ = 0;
             rotationTime = 0;
         }
     }
 }


  
avatar image Zgull Nikki_heley · Jun 17, 2018 at 01:42 PM 0
Share

You should replace "Input.GetAxisRaw()", if you want to detect swipe.

avatar image Zgull Nikki_heley · Jun 17, 2018 at 01:44 PM 0
Share

Add code to detect swipe in all four directions. You can refer the following post: https://answers.unity.com/questions/600148/detect-swipe-in-four-directions-android.html

The "swipeValue" gives the value for x and y.

avatar image Nikki_heley Zgull · Jun 17, 2018 at 01:49 PM 0
Share

I understand it sir but i don't know how to replace it with my code .... Can you help me with that sir...

Show more comments
avatar image Zgull Nikki_heley · Jun 17, 2018 at 01:51 PM 0
Share

The code that you have posted should be working in mobile without swipe. If you turn your mobile to the right, it should turn the cube in that direction. If you want it to work with swipe, check the above link.

avatar image Nikki_heley Zgull · Jun 17, 2018 at 01:53 PM 0
Share

Sir i just need the swipe

Show more comments

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

138 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 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 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 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 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 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 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

does getmousebuttondown counts as physicaly clicking (for mobile games)? 1 Answer

Detect if running on mobile vs desktop 2 Answers

script not working on second character 1 Answer

DontDestroyOnLoad doesn't work 0 Answers

Menu script not showing up like normal 1 Answer


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