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 xxTheo · Jan 27, 2018 at 04:59 AM · rotationquaternionraycasthiteuleranglesnormal

Rotating a character relative to the ground's rotation

Hello I'm new to unity and I'm attempting to create my first game. I've been trying to figure this out for two days now but haven't made any progress. In the game the character runs up a hill that gets steeper and steeper; I'm trying to smoothly rotate the character relative to the ground's x rotation. Here's my script so far.

 void Start(){
     //bool rotate = false;
       float rotSmoothing = 0.5f;
 }
 // Update is called once per frame
 void Update () {
     RaycastHit hit;

     if(Physics.Raycast(transform.position, -Vector3.up, out hit, 3)){
         
         Quaternion Rot = Quaternion.Slerp (transform.rotation,   
                    hit.collider.gameObject.transform.rotation,rotSmoothing * Time.deltaTime);    
                     transform.rotation = Quaternion.Euler (-Rot.eulerAngles.x,transform.eulerAngles.y,transform.eulerAngles.z);
                    Debug.DrawRay (transform.position, -Vector3.up * 3, Color.red);
     
     }
 }






Comment
Add comment · Show 1
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 sean244 · Jan 31, 2018 at 06:25 AM 0
Share

Would transform.RotateAround work for you?

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Nighfox · Jan 27, 2018 at 05:19 AM

Simply remove the negative sign in front of Rot.eulerAngles.x:

 transform.rotation = Quaternion.Euler(Rot.eulerAngles.x, transform.eulerAngles.y, transform.eulerAngles.z);

Another thing I noticed, in the second parameter of Quaternion.Slerp, you can just do: hit.collider.transform.rotation instead of hit.collider.gameObject.transform.rotation.

Comment
Add comment · Show 2 · 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 xxTheo · Jan 28, 2018 at 05:24 AM 0
Share

Thank you for responding but the negative sign was purposely added because of the orientation of the hill relative to the character. I might be new to unity but do you really think I'd be stuck for two days if I simply needed to remove a negative sign. Depending on how you read that, it may come off as passive aggressive but I'm saying it in the nicest way possible. I really do appreciate your response.

avatar image Nighfox xxTheo · Jan 30, 2018 at 01:31 PM 0
Share

That still completely makes no sense. You're basically flipping the target orientation of the ground incorrectly, which will make the character just stop, or worse, even jitter. Without the sign, it just re-orients fine no matter what orientation the player or the ground has, regardless of relativity.

PS: I've tested it, and it works fine without the sign. And btw, no need to take this offensively. FYI even the pros sometimes get stuck on simple things.

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

104 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

Related Questions

ConfigurableJoint - angular positions (rotation) problem 1 Answer

How to get Raycast surface normal to align particle system? 1 Answer

EulerAngles conversion Quaternion problem 2 Answers

Why is this rotation not performed as expected? 1 Answer

Matching 2 axes rotation only of 2 gameobjects 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