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
0
Question by christoph_r · Jul 29, 2013 at 11:39 PM · animationvelocity

How does rigidbody.velocity work for animated objects?

I have an animated actor, including a sword. That sword has a collider and a rigid body attached, as well as a script which is supposed to determine the relative velocity of the two rigid bodies involved (the sword and a target rigidbody I have defined). The velocity is determined OnCollisionEnter. The problem is that the velocity always seems to be 0 (both relative velocity and velocity of the sword rigid body). If that is actually normal for animated objects, how can I find out the velocity (or even better point velocity) of an animated object? The velocity is not linear, by the way. I'm grateful for any help here!

Comment
Add comment · Show 2
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 Benproductions1 · Jul 30, 2013 at 12:25 AM 0
Share

You need to tick animatePhysics on the animation component. It calculates rigidbody physics from an animation.

avatar image christoph_r · Jul 30, 2013 at 03:00 PM 0
Share

Thank you for the quick reply! The actor has an animator component, but the issue is still there, even with animatePhysics ticked. Oh and funny enough, the only thing that occasionally seems to have a point velocity at the contact point is the (motionless) target. The relative velocity is still 0 though...

2 Replies

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

Answer by Benproductions1 · Aug 01, 2013 at 10:51 PM

Hello,

If you want to manually calculate the velocity, you can do thing:

 //Note this will only work if animatePhysics is not on
 var previousPosition:Vector3;
 
 function Update() {
     previousPosition = transform.position;
 }
 
 function LateUpdate() {
     rigidbody.velocity = (previousPosition - transform.position)/Time.deltaTime;
 }

It basically calculates the current velocity from positional change per frame.
This can't be done manually because there is no literal LateFixedUpdate.

Hope this helps,
Benproductions1

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 huulong · Oct 28, 2016 at 12:29 PM 1
Share

I think you just want to store the velocity in some variable to use it later, not actually update the rigidbody velocity (which may conflict with the animator).

If you Animate Physics and want to use FixedUpdate ins$$anonymous$$d, as there is no "LateFixedUpdate", you can still update previousPosition just after storing the velocity.

avatar image julkiewicz · Mar 01, 2018 at 09:16 AM 0
Share

Or you can set animation mode to "Animate Physics" and then velocity will be computed on the rigidbodies for you. I personally think that's much cleaner.

avatar image
0

Answer by julkiewicz · Mar 01, 2018 at 09:17 AM

It will work, if you set animation mode to Animate Physics on Animator.

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

18 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

Related Questions

Can the animation editor create local rotational data? 3 Answers

Adding animation clips via script 2 Answers

Could I move animated game objects as I want? 1 Answer

non-rigidbody velocity wrong in x-axis 1 Answer

Mecanim additive animation sends characters flying? 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