【Unity动画系统】动画状态基本属性与相关API、IK简单概述

2024-04-28 10:04

本文主要是介绍【Unity动画系统】动画状态基本属性与相关API、IK简单概述,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 动画状态基本属性与相关API


  

  • Tag:判断是否当前播放着相对应Tag的动画,如果是,那么玩家的输入就是无效的。
    using UnityEngine.InputSystem;public AnimatorStateInfo stateInfo;void State(){//stateInfo = animator.GetCurrentAnimatorStateInfo(animator.GetLayerIndex("op_Rootrint_Stop_Root"));  获取当前正在播放动画的层级
    }void Update(){if(Keyboard.current.wKey.isPressed){stateInfo = animator.GetCurrentAnimatorStateInfo(0);	//获取动画所在的层级if(stateInfo.IsTag("Motion")){Debug.Log("不允许操作");return;}Debug.Log("允许操作");}
    }
  • Speed:正值加速,负值倒放(但是脚本中无法激活),要激活的话要下面的Multiplier。

  • Multiplier:使用这个值时要选择一个参数

    float animationScalar = 0f;void Start(){animator.SetFloat("Scalar" , animationScalar);
    }void Update(){if(Keyboard.current.wKey.isPressed){animationScalar += 0.1f;animator.SetFloat("Scalar" , animationScalar);}
    }

  • Animator哈希赋值
    int scalarHash;void Start(){scalarHash = Animator.StringToHash("Scalar");animator.SetFloat(scalarHash , animationScalar);
    }

  • Motion Time:表示播放当前哪一帧。如下按w就会一直播放

    int process;void Update(){if(Keyboard.current.wKey.isPressed){process += 0.1f;animator.SetFloat(processHash , process);if(process > 1){process = 0f;}}
    }
     

 

  • Mirror:镜像动画
    animator.SetBool("Mirror" , !animator.GetBool("Mirror"));	//取反则会进行镜像变化

Foot IK到简单叙述IK修正动画


反向运动学(Inverse Kinematics):通过部位的位置反向计算它们的各个父节点的旋转位移和缩放

正向运动学(forward kinematices):由屁股到末梢骨骼节点依次计算其旋转位移和缩放来决定每一块骨骼的最终位置来决定每一块骨骼的这种被称为正向动力学。

红球代表IK Goal,Unity人物角色的脚已经放在红球的位置 , 膝盖前面的则是IK Hit,防止部位出现奇怪的弯曲。

Foot IK参照的是初始的位置,调整IK Goal后不会被参考。

要在脚本内使用IK方法,必须在使用IK的层级里激活IK Pass。

public int weight;private void OnAnimatorIK(int layerIndex){	//IK回调方法animator.SetIKPosition(AvatarIKGoal.RightFoot , new Vector3(0 , 0 , 0));	//设置IKGoal的位置animator.SetIKPositionWeight(AvatarIKGoal.RightFoot , weight);	//设置IK Goal的权重,权重越高,对应部位就越跟随IK Goal,范围(0~1)
}

加上射线检测,则可以开发出脚步适应地形的效果

 

Write Defaults


Write Defaults:如果动画文件中没有描述某些属性(动画中可以更改的旋转角、位置、颜色等 )的变化,那么是否需要为这些属性写入默认值。

Animator不处理当前State包含的属性

这篇关于【Unity动画系统】动画状态基本属性与相关API、IK简单概述的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/942955

相关文章

mapstruct中的@Mapper注解的基本用法

《mapstruct中的@Mapper注解的基本用法》在MapStruct中,@Mapper注解是核心注解之一,用于标记一个接口或抽象类为MapStruct的映射器(Mapper),本文给大家介绍ma... 目录1. 基本用法2. 常用属性3. 高级用法4. 注意事项5. 总结6. 编译异常处理在MapSt

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MyBatis ResultMap 的基本用法示例详解

《MyBatisResultMap的基本用法示例详解》在MyBatis中,resultMap用于定义数据库查询结果到Java对象属性的映射关系,本文给大家介绍MyBatisResultMap的基本... 目录MyBATis 中的 resultMap1. resultMap 的基本语法2. 简单的 resul

基于Python实现一个简单的题库与在线考试系统

《基于Python实现一个简单的题库与在线考试系统》在当今信息化教育时代,在线学习与考试系统已成为教育技术领域的重要组成部分,本文就来介绍一下如何使用Python和PyQt5框架开发一个名为白泽题库系... 目录概述功能特点界面展示系统架构设计类结构图Excel题库填写格式模板题库题目填写格式表核心数据结构

Linux系统中的firewall-offline-cmd详解(收藏版)

《Linux系统中的firewall-offline-cmd详解(收藏版)》firewall-offline-cmd是firewalld的一个命令行工具,专门设计用于在没有运行firewalld服务的... 目录主要用途基本语法选项1. 状态管理2. 区域管理3. 服务管理4. 端口管理5. ICMP 阻断

SpringBoot读取ZooKeeper(ZK)属性的方法实现

《SpringBoot读取ZooKeeper(ZK)属性的方法实现》本文主要介绍了SpringBoot读取ZooKeeper(ZK)属性的方法实现,强调使用@ConfigurationProperti... 目录1. 在配置文件中定义 ZK 属性application.propertiesapplicati

Java反射实现多属性去重与分组功能

《Java反射实现多属性去重与分组功能》在Java开发中,​​List是一种非常常用的数据结构,通常我们会遇到这样的问题:如何处理​​List​​​中的相同字段?无论是去重还是分组,合理的操作可以提高... 目录一、开发环境与基础组件准备1.环境配置:2. 代码结构说明:二、基础反射工具:BeanUtils

Java 枚举的基本使用方法及实际使用场景

《Java枚举的基本使用方法及实际使用场景》枚举是Java中一种特殊的类,用于定义一组固定的常量,枚举类型提供了更好的类型安全性和可读性,适用于需要定义一组有限且固定的值的场景,本文给大家介绍Jav... 目录一、什么是枚举?二、枚举的基本使用方法定义枚举三、实际使用场景代替常量状态机四、更多用法1.实现接

git stash命令基本用法详解

《gitstash命令基本用法详解》gitstash是Git中一个非常有用的命令,它可以临时保存当前工作区的修改,让你可以切换到其他分支或者处理其他任务,而不需要提交这些还未完成的修改,这篇文章主要... 目录一、基本用法1. 保存当前修改(包括暂存区和工作区的内容)2. 查看保存了哪些 stash3. 恢

C/C++ chrono简单使用场景示例详解

《C/C++chrono简单使用场景示例详解》:本文主要介绍C/C++chrono简单使用场景示例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友... 目录chrono使用场景举例1 输出格式化字符串chrono使用场景China编程举例1 输出格式化字符串示