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 /
This post has been wikified, any user with enough reputation can edit it.
avatar image
0
Question by alexkaskasoli · Dec 07, 2013 at 12:17 PM · rotatetranslate

Can't Translate and Rotate at same time

I'm writing my own character controller that uses a rigidbody. I'm getting stuck on something weird. This is my code (variable declarations not included):

 void Start() {
     myNormal = transform.up;
     rigidbody.freezeRotation = true;

     // Distance between center of Character Position and the Ground
     var collider = gameObject.collider as CapsuleCollider;
     distGround = collider.bounds.extents.y - collider.center.y;
 }

 void FixedUpdate() {
     // Appliy Gravity
     rigidbody.AddForce(-1 * gravity * this.rigidbody.mass * myNormal);
 }

 void Update() {
     transform.Translate(Input.GetAxis("Horizontal") * moveSpeed * Time.deltaTime, 0, Input.GetAxis("Vertical") * moveSpeed * Time.deltaTime);
     transform.Rotate(0, Input.GetAxis("Mouse X") * turnSpeed * Time.deltaTime, 0);
     camera.transform.Rotate(-1 * Input.GetAxis("Mouse Y") * turnSpeed * Time.deltaTime, 0, 0);
 }

The update function handles the character translation and rotation. For vertical rotation (looking up and down) only the camera rotates. This is because I plan on using some weird gravity effects latter on and need the character to stay vertical with the floor.

My problem with this script so far is that I can move the character position with WASD, and look around with the Mouse, but I can't do both at the same time.

While my character is moving, the rotation is frozen. How can I fix this?

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

1 Reply

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

Answer by meat5000 · Dec 07, 2013 at 12:22 PM

I think your broken rotation has something to do with having frozen rigidbody rotation :)

Do not translate or rotate a rigidbody. This will cause it to teleport.

Use AddForce and AddTorque instead.

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 alexkaskasoli · Dec 07, 2013 at 12:29 PM 0
Share

Thanks for the answer! However there are quite a lot of working rigidbody controllers using Transform and Rotate that seem to work quite well. I can actually get my rotation working fine if I use the keyboard to rotate around, it's nice and fluid and works as expected (even with the rotation frozen, which is necessary in my case). For some reason mouse input doesn't seem to get processed while the character is moving :s

avatar image meat5000 ♦ · Dec 07, 2013 at 12:39 PM 0
Share

You will find they move ok but will get a lot of problems with regard to colliders and collisions. You will find that it is the transform moving the rigidbody and not the rigidbody moving the transform.

Have you tried some Debug.Log output for the mouse?

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

17 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

Related Questions

Porting to Windows: Translate problem 2 Answers

VR Scale/Move 0 Answers

Rotation follow translation 3 Answers

simple 2d car Ai 0 Answers

Camera transform not responding after load 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