AnimatorController反向运动学IK

通过使用反向运动学IK,我们可以根据需要控制角色身体某个特定部位进行旋转或移动,达到想要的一些效果,比如:在移动时,让一只脚带伤拖行;让手抬起去拿桌上的苹果;让脑袋一直面向我们的色像机,就像一直注视着我们 等等。

先来个模拟受伤的脚吧:
在此之前,请将角色的动画状态机中,应用IK的层勾选IKPass属性:

然后,在人物对象下,建立一个空的子物体IKTarget,放在右脚踝靠后的地方。
最后后在人物上添加脚本IKController:

 1 using UnityEngine;
 2 using System.Collections;
 3
 4 public class IKController : MonoBehaviour
 5 {
 6     public Transform target;  //IK目标
 7     public bool ikActive;     //IK是否可用
 8     private Animator anim;
 9
10     void Awake()
11     {
12         anim = GetComponent <Animator> ();
13     }
14
15     //IK控制要在OnAnimatorIK方法中写!
16     void OnAnimatorIK()
17     {
18         if (ikActive)
19         {
20             //指定要控制的身体部位的IK权重,1为启用,0为不启用。
21             anim.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1);
22             anim.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1);
23
24             //设置IK的目标值
25             anim.SetIKPosition(AvatarIKGoal.RightFoot, target.position);
26             anim.SetIKRotation(AvatarIKGoal.RightFoot, target.rotation);
27         }
28     }
29 }

将target设置为我们的刚才建立的空物体IKTarget,运行游戏,让角色移动动画播放起来,可以看到右脚的动画没有播放,而是拖着走的咯。我们可以在scene视图中改变IKTarget的位置和旋转,主角的右脚也会跟着移动,当然这也可以用代码进行控制。

再来个控制人物一直注视色像头的:
将色像机放在角色前面,并在上面脚本添加一点代码:

1 anim.SetLookAtWeight(1);
2 //眼睛看这里
3 anim.SetLookAtPosition(GameObject.FindWithTag("MainCamera").transform.position);

OK,运行游戏,移动色像机,别这样一直看着人家啊,会害羞的^^!

时间: 2024-10-03 21:15:51

AnimatorController反向运动学IK的相关文章

Unity3D技术之从 Cinema 4D 中导入对象浅析

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. 从 Cinema 4D 中导入对象 Unity 可直接导入 Cinema 4D 文件.开始时只需将 .c4d 文件放到工程的资源 ( Assets) 文件夹下. 切换回 Unity 时,场景自动导入并显示在工程视图 (Project view) 中. 要在 Unity 中查看模型,只需将其从工程

Unity3D技术之从 Maya 中导入对象浅析

欢迎来到unity学习.unity培训.unity企业培训教育专区,这里有很多U3D资源.U3D培训视频.U3D教程.U3D常见问题.U3D项目源码,我们致力于打造业内unity3d培训.学习第一品牌. 从 Maya 中导入对象 Unity 可直接导入 Maya 文件.开始时只需将 .mb 或 .ma 文件放到工程的资源 ( Assets) 文件夹下. 切换回 Unity 时,场景自动导入并显示在工程视图 (Project view) 中. 要在 Unity 中查看模型,只需将其从工程视图 (P

第1部分: 游戏引擎介绍, 渲染和构造3D世界

原文作者:Jake Simpson译者: 向海Email:[email protected] ------------------------------------------------------------第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远. DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎". 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和

游戏引擎剖析

原文作者:Jake Simpson 译者: 向海 Email:[email protected] 第1部分: 游戏引擎介绍, 渲染和构造3D世界 介绍 自Doom游戏时代以来我们已经走了很远. DOOM不只是一款伟大的游戏,它同时也开创了一种新的游戏编程模式: 游戏 "引擎". 这种模块化,可伸缩和扩展的设计观念可以让游戏玩家和程序设计者深入到游戏核心,用新的模型,场景和声音创造新的游戏, 或向已有的游戏素材中添加新的东西.大量的新游戏根据已经存在的游戏引擎开发出来,而大多数都以ID公

Elasticsearch安装中文分词插件ik

Elasticsearch默认提供的分词器,会把每个汉字分开,而不是我们想要的根据关键词来分词.例如: curl -XPOST "http://localhost:9200/userinfo/_analyze?analyzer=standard&pretty=true&text=我是中国人" 我们会得到这样的结果: { tokens: [ { token: text start_offset: 2 end_offset: 6 type: <ALPHANUM>

IK分词器 整合solr4.7 含同义词、切分词、停止词

IK分词器如果配置成 <fieldType name="text_ik" class="solr.TextField"> <analyzer type="index" isMaxWordLength="false" class="org.wltea.analyzer.lucene.IKAnalyzer"/> <analyzer type="query" is

solr5.5.4整合IK分词器

1.下载IK分词器支持5.5.4的     http://download.csdn.net/detail/wang_keng/9535491 2.需要把分析器的jar包添加到solr工程中的tomcat的WEB-INF/lib下   cp IKAnalyzer2012FF_u2.jar /usr/local/solr/tomcat/webapps/solr/WEB-INF/lib/ 3.需要把IKAnalyzer需要的扩展词典及停用词词典.配置文件复制到solr工程的WEB-INF/class

elasticsearch IK中文分词

1. analysis-ik安装 1). 从 https://github.com/medcl/elasticsearch-analysis-ik ,下载 elasticsearch-analysis-ik-master.zip 2). 解压后, cd  elasticsearch-analysis-ik-master /usr/local/maven/bin/mvn package .... wait  5-6分钟 编译成功后, 拿到target/releases/下的zip包,上传到服务器上

Unity自动创建AnimatorController

这个是我现在所知最正确的MecAnim的用法了.先上代码: using UnityEngine; using UnityEditor; using UnityEditorInternal; using System; using System.Collections; using System.Collections.Generic; public class GetAnimationClips : AssetPostprocessor { void OnPostprocessModel(Gam