【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

相关文章

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方

Linux系统之lvcreate命令使用解读

《Linux系统之lvcreate命令使用解读》lvcreate是LVM中创建逻辑卷的核心命令,支持线性、条带化、RAID、镜像、快照、瘦池和缓存池等多种类型,实现灵活存储资源管理,需注意空间分配、R... 目录lvcreate命令详解一、命令概述二、语法格式三、核心功能四、选项详解五、使用示例1. 创建逻

Java中使用 @Builder 注解的简单示例

《Java中使用@Builder注解的简单示例》@Builder简化构建但存在复杂性,需配合其他注解,导致可变性、抽象类型处理难题,链式编程非最佳实践,适合长期对象,避免与@Data混用,改用@G... 目录一、案例二、不足之处大多数同学使用 @Builder 无非就是为了链式编程,然而 @Builder

spring中的@MapperScan注解属性解析

《spring中的@MapperScan注解属性解析》@MapperScan是Spring集成MyBatis时自动扫描Mapper接口的注解,简化配置并支持多数据源,通过属性控制扫描路径和过滤条件,利... 目录一、核心功能与作用二、注解属性解析三、底层实现原理四、使用场景与最佳实践五、注意事项与常见问题六

使用Python构建一个高效的日志处理系统

《使用Python构建一个高效的日志处理系统》这篇文章主要为大家详细讲解了如何使用Python开发一个专业的日志分析工具,能够自动化处理、分析和可视化各类日志文件,大幅提升运维效率,需要的可以了解下... 目录环境准备工具功能概述完整代码实现代码深度解析1. 类设计与初始化2. 日志解析核心逻辑3. 文件处

MySql基本查询之表的增删查改+聚合函数案例详解

《MySql基本查询之表的增删查改+聚合函数案例详解》本文详解SQL的CURD操作INSERT用于数据插入(单行/多行及冲突处理),SELECT实现数据检索(列选择、条件过滤、排序分页),UPDATE... 目录一、Create1.1 单行数据 + 全列插入1.2 多行数据 + 指定列插入1.3 插入否则更

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.