Unity Animator的使用技巧
2016-04-05 12:10
465 查看
1.一个小小的案例:
此脚本挂在有Animator组件的GameObject上:
它返回一个float值大于等于1则动画播放完一次了。
ScAnim.GetCurrentAnimatorStateInfo(0).IsName("Attack")
返回bool在状态切换时。
此脚本挂在有Animator组件的GameObject上:
private Animator ScAnim; void Start () { tmpValue = bloodValue=1f; ScAnim = this.gameObject.GetComponent<Animator>();获取组件 } RaycastHit mHit; // Update is called once per frame void Update () { Ray mRay = Camera.main.ScreenPointToRay(Input.mousePosition); if (Input.GetMouseButtonDown(1)) { if (Physics.Raycast(mRay, out mHit))//利用射线来检测设置是否被打和是否要攻击。 { if (mHit.collider.gameObject.tag == "Body") { // Debug.Log(ScAnim.GetCurrentAnimationClipState(0)[1]); ScAnim.SetBool("IsAttacked", true); } if (mHit.collider.gameObject.tag == "Head") { ScAnim.SetBool("IsAttack", true); } } } AutoResetAnim();//在任意时刻确定播放完一次动画后可以回到之前的状态,并且把SetBool的值变为false。 } void AutoResetAnim() { if (ScAnim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1&&ScAnim .GetCurrentAnimatorStateInfo (0).IsName ("Attacked")) { ScAnim.SetBool("IsAttacked", false ); } if (ScAnim.GetCurrentAnimatorStateInfo(0).normalizedTime >= 1 && ScAnim.GetCurrentAnimatorStateInfo(0).IsName("Attack")) { ScAnim.SetBool("IsAttack", false); } }*利用的是
ScAnim.GetCurrentAnimatorStateInfo(0).normalizedTime
它返回一个float值大于等于1则动画播放完一次了。
ScAnim.GetCurrentAnimatorStateInfo(0).IsName("Attack")
<strong>同时确定是否当前播放的是你要的动画。</strong>
ScAnim.IsInTransition(0)
返回bool在状态切换时。
相关文章推荐
- c#调用COM组件
- Shell 脚本编程陷阱
- VBS脚本写的Windows硬件检测工具分享
- 用vbscript实现隐藏任务栏图标的脚本
- 用autoit编写第一个脚本(Hello World)
- C#实现把指定数据写入串口
- C#动态创建button的方法
- C#中抽象方法与虚拟方法的区别
- c#中虚函数的相关使用方法
- C#实现给图片加水印的方法
- VBS调用WMI快速关闭IE的脚本
- C#使用加边法计算行列式的值
- C#实现多线程的同步方法实例分析
- C#中尾递归的使用、优化及编译器优化
- C#中的delegate委托类型基本学习教程
- C#实现子窗体与父窗体通信方法实例总结
- C#通用邮件发送类分享
- 举例讲解C#中自动实现的属性
- C#中this的用法集锦
- C#数据结构之顺序表(SeqList)实例详解