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 /
  • Help Room /
This question was closed Sep 09, 2021 at 12:09 PM by EmreB99 for the following reason:

The question is answered, right answer was accepted

avatar image
0
Question by EmreB99 · Feb 25, 2019 at 05:24 PM · c#rotationinputpositiontouch

Touch position returns weird behaviours

So I am transformig the rotation of my gameObject to the touch position. I need it to look at touch position. first I tried using LookAt:

 transform.LookAt(normalizedPosition);

but it resulted in very weird behaviours.

And than I tried to use eualerAngles to alter the rotation of Z axis spesifically.

 transform.eulerAngles = new Vector3(transform.rotation.x, transform.rotation.y, normalizedPosition.z * 1000);

But this resulted in very weird behaviours too.

Now finally what I tried as a last effort was to use transform.rotate.

 transform.Rotate(0, 0, normalizedPosition.z * 1000);

This resulted in weird behaviour too.

Here's my final code that I am using:

         if (Input.touchCount > 0)
         {
             Debug.Log("Touched meh");
             
             touch = Input.GetTouch(0);
             Vector3 touchPosition = camera.ScreenToWorldPoint(touch.position);
             Vector3 normalizedPosition = (touchPosition - transform.position).normalized;
             if (transform.rotation.z != normalizedPosition.z)
             {
                 transform.Rotate(0, 0, normalizedPosition.z * 1000);
             }
         }



And heres what I mean by weird behaviour. gif

Comment
Add comment · Show 4
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 DCordoba · Feb 25, 2019 at 06:01 PM 1
Share

what you want to do with?

          if (transform.rotation.z != normalizedPosition.z)
          {
              transform.Rotate(0, 0, normalizedPosition.z * 1000);
          }

second normalizedPosition means the direction vector (from 0 to 1) and rotate and eulerAngle use degrees (from 0 to 360) you know, one is a vector on 3d space and the other is... angles from 0 rotation ( eulerAngles ) and from current rotation ( Rotate ) LookAt probably wont work because you use another axis, different from forward (the blue on scene) as the forward of your object you can try the following:

  • correct your 3d object, to face the blue axis

  • attach a empty parent to your object, rotate the child so the blue axis of the parent is the face of the child and use lookAt on the parent

  • use the real "face" axis to force the rotation use

      transform.up = normalizedPosition;
    

if the "face" is pointing to the green vector, or use

   transform.right = normalizedPosition;

if the "face" is to the red vector

avatar image TreyH DCordoba · Feb 25, 2019 at 06:09 PM 0
Share

The assignment of

 transform.forward = normalizedPosition;


is an elegant solution if OP's transform lines up nicely, yeah.

avatar image DCordoba TreyH · Feb 25, 2019 at 06:20 PM 0
Share

I dont know if your comment is sarcasm, but I think to your solution, handling it from the screen using atangent is better than override the value of an axis, I was editing the comment and I didn't saw it before.

Show more comments

1 Reply

  • Sort: 
avatar image
1
Best Answer

Answer by TreyH · Feb 25, 2019 at 05:57 PM

Your units aren't lining up to anything intelligible, so code will have pretty much random outcomes. Transform.Rotate takes units in degrees, but you are actually supplying meters with the z-component of a Vector3.


But, you had the right idea, though. Normalizing the offset is your first step, turning that into a relative polar angle is the second:

 void Update()
 {
     if (Input.touchCount > 0)
     {
         // It's more intuitive to just get the object's appearance on screen.  Casting
         // a screen point into the world is a little murky as you aren't always sure
         // of where it will end up.
         //
         Vector3 mouse = Input.GetTouch(0).position;
         Vector3 thisOnScreen = Camera.main.WorldToScreenPoint(this.transform.position);
 
         // Get the noramlized difference between our mouse and object's screen representation
         Vector3 relative = (mouse - thisOnScreen).normalized;
 
         // Get a degree representation around the origin for that difference
         float theta = Mathf.Atan2(relative.y, relative.x);
         float thetaDegrees = theta * Mathf.Rad2Deg;
 
         // This will change depending on your situation.  In my case, it was just an arrow
         // point right, but you might need to add a multiple of 90 here to correct your heading.
         this.transform.rotation = Quaternion.Euler(Vector3.forward * thetaDegrees);
     }
 }


giving you something like:

alt text


mouse-look.gif (196.7 kB)
Comment
Add comment · Show 5 · 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 EmreB99 · Feb 25, 2019 at 07:11 PM 0
Share

Behavior looks a lot more normal compared to my approach but object still rotates irrelevant to my finger's touch input position. I am trying to make it look towards my input position. I am not familiar with how Quaternion actually works. I looked it up to try to implement it better in the code but it contains mathematical calculations beyond my knowledge...

https://youtu.be/ePoU_nV-9JI

avatar image TreyH EmreB99 · Feb 25, 2019 at 07:33 PM 0
Share

Where are you putting the script in your object hierarchy?

avatar image TreyH TreyH · Feb 25, 2019 at 07:34 PM 0
Share

Your object also moves when you apply the first touch, making me think your script is on a parent object or something.

Go into a blank scene and just make a single object with a SpriteRenderer. Attach a script with the above block as its only code and see what happens.

Show more comments

Follow this Question

Answers Answers and Comments

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

Rotate on Touch Input 1 Answer

How do I change the position of my player model after I rotate it so it's not teleporting? 0 Answers

Rotation around player. and Camera position, 2 Answers

Touch to move and drag to rotate object 2 Answers

Need help Slerping position and rotation correctly 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