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 didicayu · Mar 17, 2020 at 08:47 PM · android2drotationspaceshiprotatetowards

how do I rotate the player to face the user input smoothly?

I was wondering how I could make my player rotate towards the user input smoothly, I've been using unity for some years but I still don't get the rotation and quaternion things so I thought you may be able to help. alt text

The ship moves automatically to where it's looking at a constant speed but I can't seem to figure out how to make it so that when you press "A" for example the ship automatically rotates towards 270 degrees and so on, which I feel would be much more intuitive than what I have now that simply rotates one way or another depending on the key you are pressing. It would be nice to also have some way of implementing it with "Input.GetAxis("Horizontal")" or something like that since I would like to adapt it to a ps4 controller instead of limiting it to just a keyboard

Thanks in advance :D

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 
 public class ShipController : MonoBehaviour
 {
     public float speed = 5;
     public float rotationSpeed = 20;
     Rigidbody2D rb;
     BoxCollider2D Bcoll;
     // Start is called before the first frame update
     void Start()
     {
         rb = gameObject.GetComponent<Rigidbody2D>();
         Bcoll = gameObject.GetComponent<BoxCollider2D>();
     }
 
     // Update is called once per frame
     void Update()
     {
         
     }
     private void FixedUpdate()
     {
         gameObject.transform.Translate(-Vector3.up * Time.deltaTime * speed);
 
         
         if (Input.GetKey(KeyCode.A))
         {
             transform.Rotate(0, 0, Time.deltaTime * rotationSpeed);           
             
         }else if (Input.GetKey(KeyCode.D))
         {
             transform.Rotate(0, 0, -Time.deltaTime * rotationSpeed);
         }
     }
 }


question.png (84.2 kB)
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 metalted · Mar 17, 2020 at 09:10 PM 1
Share

Also as a tip, getting comfortable with Quaternions will be really helpful in the future. As the unity site also mentions, it not easy to understand what a quaternion is intuitively. But it will greatly increase the coding fun when you know what it is, what it does and how you can use it. I suggest just watching a couple of youtube explanations. :)

1 Reply

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

Answer by metalted · Mar 17, 2020 at 09:04 PM

So this will be a lot easier when using the horizontal and vertical axis instead of WASD, because you already have the axis going from -1 to 1. Its hard to explain how it works, so ill just write some code and comment a long the way:

 //Set a speed for the rotation
 float rotationSpeed = 5f;
 //Get the position of the player.
 Vector3 currentPosition = transform.position;
 //Create a vector for the inputs (Which components you use depends on the game)
 Vector3 inputVector = new Vector3(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"), 0);
 //Adding these vectors together will result in a position in the world, that is around your player.
 inputVector += currentPosition;
 
 /*Example:
 * The players position is at 0,0,0.
 * Input is 1,0,0.
 * The position in space would be 0,0,0 + 1,0,0 = 1,0,0.
 * This would be to the right of the player.
 */
 
 //Now we create a target rotation, by creating a direction vector: (This would be just be inputVector in this case).
 Quaternion targetRotation = Quaternion.LookRotation(inputVector - currentPosition);
 
 //Rotate smoothly to this target:
 transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, rotationSpeed);


Im not at home at the moment, so i can't really test it properly, so it might not work as is. But im pretty sure this will get you in the right direction.

Comment
Add comment · 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

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

391 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

Related Questions

How to control a 2d character in an top-down android game with the standard joystick? 1 Answer

Rotating a 2D object when the phone is rotated 1 Answer

2D spaceship rotation 0 Answers

Why Rotate player toward mouse direction keeps increasing rotation speed? 1 Answer

how to rotate 2d obj on android 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