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 /
avatar image
1
Question by cyangamer 1 · Aug 20, 2010 at 10:07 AM · rigidbodyrotatecapsulespider

Rigidbody will not rotate correctly

I can't get my spider-shaped rigidbody game object to rotate correctly. To test out the Rigidbody capabilities, I've given a capsule a basic movement function.

void Move(Vector3 position) { previousPosition = transform.position; Vector3 direction = position - transform.position; direction.y = 0; if (direction.magnitude < 0.2F) { if (num == (waypoints.Length - 1)) num = 0; else num++; return; }

 // Rotate towards the target
 transform.rotation = Quaternion.Slerp(transform.rotation, Quaternion.LookRotation(direction), 1 * Time.deltaTime);

 rigidbody.AddRelativeForce(transform.forward, ForceMode.VelocityChange);

}

This capsule is supposed to follow a series of waypoints, but it's going in the wrong direction and off the expected path completely. To be more specific, the capsule turns is some odd direction, and then continues to move in that direction and never changes its direction. I really hope someone will want to help me. I know the physics in Unity can be quite complex, but it's also widely used - so hopefully there is someone who has had this problem before.

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

2 Replies

· Add your reply
  • Sort: 
avatar image
2

Answer by Owen-Reynolds · Apr 02, 2011 at 05:48 PM

When you get to a path node, you are updating the index, but not the the position:

if (direction.magnitude < 0.2F)
  {
      if (num == (waypoints.Length - 1)) num = 0;
      else num++;
      position = waypoints[num]; // <-- change target position ADD ME
      // assuming  Vector3[] waypoints;
      return;
  }

But, the missing dest-update should cause it to swing in a big circle back to that first destination. You say it's not doing that, so something else must also be jinked. I'd try testing with the rotation "snapped" to the final: transform.rotation = Quaternion.LookRotation(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
avatar image
0

Answer by uni · Aug 20, 2010 at 11:38 AM

If you want to move the object in the direction it's facing move it along it's local z-axis. I would comment out the speed modifier for now and keep the code as simple as possible till u get this part working right. seems like a bit of excess code in here that u may not need. If your spider is on a flat surface then Slerp should be ok, otherwise u might want to raycast for the normal that it's sitting on. I'm new to this too so I'm just throwing in anything that can help.

Comment
Add comment · Show 4 · 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 cyangamer 1 · Aug 21, 2010 at 07:17 AM 0
Share

There's already a command that moves it along it's z-axis (Vector3.forward). That's what Vector3 forward = transform.TransformDirection(Vector3.forward); is for.

avatar image uni · Aug 21, 2010 at 11:39 AM 0
Share

I know. That's what I said.

avatar image cyangamer 1 · Aug 23, 2010 at 10:24 AM 0
Share

Ah, ok. I've edited my question, stripped away the basics and added what I think is the core functionality. I'm also using a capsule now, a basic shape.

avatar image Wolfram · Aug 23, 2010 at 11:15 AM 1
Share

@cyngamer: actually, Unity already provides convenience variables for transform directions. So Vector3.forward is always (0/0/1), while transform.forward is always the local +Z of that transform.

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

No one has followed this question yet.

Related Questions

Player character X rotation going haywire on game start 1 Answer

Rotating one axis using Mathf.Lerp 1 Answer

Sphere vs Capsule collider collision resolution 0 Answers

C# Rotate velocity issue 1 Answer

Move and rotate Rigibody 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