• 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 /
  • Help Room /
avatar image
0
Question by harkan94 · Dec 30, 2015 at 02:35 PM · animationanimatoranimator controlleranimationsanimate

How do I rotate specific joints/bones using a script?

How do I rotate specific joints/bones using a script? I created a basic humanoid character in Blender, and attached a rig to it and created several animations. I created a script and set up the Animator Controller such that my character will do specific animations when I press a key.

Now, I am trying to build on top of this by creating a script that will allow me to manipulate specific joints/bones by pressing a key. I know that bones in Unity are treated as Transform objects, but I do not know the correct syntax for selecting or rotating a specific bone. My end goal is to be able to press a button and have a specific joint (e.g. the left arm) rotate.

For reference, here is my current model.alt text

Here is the current setup I have on the Animator.alt text

And here is the code I have on my script.

using UnityEngine; using System.Collections;

public class GraspScript : MonoBehaviour { private Animator anim; private int grasper;

  // Use this for initialization
  void Start () {
      anim = GetComponent<Animator> ();
  }
  
  // Update is called once per frame
  void Update () {
      if (Input.GetKeyDown (KeyCode.Alpha1)) {
          grasper = 1;
      } else if (Input.GetKeyDown (KeyCode.Alpha2)) {
          grasper = 2;
      } else if (Input.GetKeyDown (KeyCode.Alpha3)) {
          grasper = 3;
      } else if (Input.GetKeyDown (KeyCode.Alpha4)) {
          grasper = 4;
      } else if (Input.GetKeyDown (KeyCode.Space)) {
          grasper = 0;
      }
      anim.SetInteger ("grasp", grasper);
      Debug.Log (grasper);
  }

} Thank you so much for your help!

screen-shot-2015-12-29-at-15656-pm.png (503.1 kB)
screen-shot-2015-12-29-at-20019-pm.png (123.0 kB)
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

Answer by Brodcouille · Mar 17, 2017 at 03:52 PM

All of your joints are considered as GameObject in your rig hierarchy (in the inspector). You can apply a transform to these GameObject :

// You store the transform of your specific gameObject //Rig should be metarig.001 in your case (avoid using "." as name for your gameObjects) Transform jointObj = Rig.transform.FindChild(boneName);

//we set the rotation you want on your joint (we transform the euler angles in quaternion) Vector3 rot = new Vector3(rot.x + 90f, rot.y, rot.z); jointObj.rotation = Quaternion.Euler(rot);

keep in mind that your rotation transform inherit from the parents if you want to change only the local rotation, use --> jointObj.localRotation = Quaternion.Euler(rot);

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.

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

56 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

Related Questions

Animator transitions not working at all 2 Answers

Animations are becoming distorted after an animation transition. 0 Answers

NEED HELP ANIMATING PLAYER MOVEMENT 0 Answers

Specific Animation not Playing 0 Answers

How can I create a single Animator Controller for all of my Enemies animations? 0 Answers

  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges