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 Fluoridation · Dec 13, 2017 at 05:24 PM · animatorinterpolationinverse kinematic

ik target isn't being reset

I'm working on an ik function which changes the target shoulder for the gun a character is holding if they lean to the left. The idea is that the ik position will interpolate between the left and right shoulders as the animator leans the character left or right. With the script as it is now (if the interval is not 1, it starts at the left shoulder), the ik position starts at the rightshoulder, but upon changing, it never returns.

     void OnAnimatorIK () {
         AnimatorStateInfo animstate = animator.GetCurrentAnimatorStateInfo(0);
         float actualincrement = 0f;
         positionadjust = shouldertarget;
 
         if (animator.GetFloat("lean") < 0) {//the targets aren't changing back. Has to be a problem with the targets.
             target2 = shouldertargetleft.position;
             target = shouldertarget.position;//this position becomes identical to the above after a lean for some reason.
             leanincrement += Time.deltaTime * 0.35f;
             leanincrement2 = 0f;
             actualincrement = leanincrement;
         } else {
             target2 = shouldertarget.position;
             target = shouldertarget.position;
             leanincrement2 += Time.deltaTime * 0.35f;
             leanincrement = 0f;
             actualincrement = leanincrement2;
         }
         positionadjust.position = Vector3.Lerp (target, target2, 1f);
 
         positionadjust.LookAt (looktarget);//this is about 90 degrees off.
         positionadjust.Rotate (Vector3.forward * -90f);
 
         //positionadjust = aimiktarget; //ik for ADS proof of concept
         if (!animstate.IsName ("sprinting")) {
             animator.SetIKPositionWeight (AvatarIKGoal.RightHand, 0.1f);
             animator.SetIKRotationWeight (AvatarIKGoal.RightHand, 0.8f);
             animator.SetIKPosition (AvatarIKGoal.RightHand, positionadjust.position);
             animator.SetIKRotation (AvatarIKGoal.RightHand, positionadjust.rotation);
         }
 
         lefthandik (animstate);
     }

I'm sure it isn't a problem with the if/else statements (as I've already checked thru debug). I figure it has to be a problem with the assignment of target and target2, or else the positions that they inherit (which are empty gameobjects parented to the main camera). I've noticed in the inspector that the actual transforms of the above mentioned empty objects become identical about the same time the issue occurs, despite the fact that they are never changed or assigned through code, only accessed.

I'm totally confused as to what is happening here. It seems to me this code ought to be working, but it isn't.

Does anyone have any ideas? This isn't an absolutely vital function to the game I'm trying to make (though its absence would be irritating without hitscan bullets), but it is rather frustrating to run into such a strange behavior with such a simple bit of code. It makes me think I must be missing something obvious.

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

0 Replies

· Add your reply
  • Sort: 

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

80 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

Related Questions

Why is my Ik not working 0 Answers

Inverse Kinematics By Dogzer: transition apart from 0 and 1 give srange results 0 Answers

Modifying animation in Late Update not working 1 Answer

IK for hands 0 Answers

How to smoothly switch from script controlled rotation to animator controlled rotation (and the other way around) 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