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
1
Question by bcv · Dec 12, 2016 at 08:56 PM · animatormecanimanimationclip

Getting the position of an object in an AnimationClip ?

Hello

I have a situation where I need to get the position of an object (a simple transform) inside an AnimationClip, is there a way to do that ?

Basically I create a helper transform along with my character animation in a 3d application like Blender and want to fetch the position at runtime. Now, I want to do this for all AnimationClip(s) in the controller as this object has a different position in each AnimationClip, so ideally at start, I would like to loop through all AnimationClip(s) and save the position of the object.

Btw I'm aware of StateMachineBehaviours, and that inside the OnEnterState I can get the Animator component and from there do a animator.transform.FindChild("MyObject"); but logically StateMachineBehaviors are only run when the state is being executed, so if I'm not executing that state I don't see a way to get the contents of the AnimationClip.

Thanks

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
2

Answer by bcv · Dec 13, 2016 at 02:23 AM

OK it took a while but for those wondering how I managed to solve this.

It's worth mentioning that my character uses Mecanim, and simply inside the character I do the following:

 Animator myCharAnimator = GetComponent<Animator>();
 foreach (AnimationClip clip in myCharAnimator.runtimeAnimatorController.animationClips)
 {
     clip.SampleAnimation(transform.gameObject, 0.1f);
     Transform helperTransform = transform.FindChild("helperTr");
 
     // Save transform
     // Output
     Debug.Log("Position of keyed helper transform is: "+helperTransform.position.toString("F4"));
 }

For those wondering what's this for, in any 3d application I can create and key empty transforms (they are called EMPTYs in Blender for example) to allow them to be used for many purposes, for example if you have an animation where the character needs to interact with multiple other characters you just create those transforms where the non player characters need to be positioned and inside Unity you'll know the exact position that those other characters need to be relative from the player position, in order to play the animation exactly as in the 3d app.

Not sure if this is the best way to do it but it works for this case, if anyone has any other approaches let me know.

Cheers

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Edit AnimationClip during runtime from script 0 Answers

animation to animator [mecanim] 1 Answer

Is there a way to change the WrapMode of all Animations in a Mecanim Animator? 1 Answer

Problem with Animator.Play() 0 Answers

how to go to last frame of animation clip immediately? 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