【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

相关文章

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

redis中使用lua脚本的原理与基本使用详解

《redis中使用lua脚本的原理与基本使用详解》在Redis中使用Lua脚本可以实现原子性操作、减少网络开销以及提高执行效率,下面小编就来和大家详细介绍一下在redis中使用lua脚本的原理... 目录Redis 执行 Lua 脚本的原理基本使用方法使用EVAL命令执行 Lua 脚本使用EVALSHA命令

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Python的time模块一些常用功能(各种与时间相关的函数)

《Python的time模块一些常用功能(各种与时间相关的函数)》Python的time模块提供了各种与时间相关的函数,包括获取当前时间、处理时间间隔、执行时间测量等,:本文主要介绍Python的... 目录1. 获取当前时间2. 时间格式化3. 延时执行4. 时间戳运算5. 计算代码执行时间6. 转换为指

MySQL 中的 LIMIT 语句及基本用法

《MySQL中的LIMIT语句及基本用法》LIMIT语句用于限制查询返回的行数,常用于分页查询或取部分数据,提高查询效率,:本文主要介绍MySQL中的LIMIT语句,需要的朋友可以参考下... 目录mysql 中的 LIMIT 语句1. LIMIT 语法2. LIMIT 基本用法(1) 获取前 N 行数据(

springboot项目中常用的工具类和api详解

《springboot项目中常用的工具类和api详解》在SpringBoot项目中,开发者通常会依赖一些工具类和API来简化开发、提高效率,以下是一些常用的工具类及其典型应用场景,涵盖Spring原生... 目录1. Spring Framework 自带工具类(1) StringUtils(2) Coll

SpringSecurity JWT基于令牌的无状态认证实现

《SpringSecurityJWT基于令牌的无状态认证实现》SpringSecurity中实现基于JWT的无状态认证是一种常见的做法,本文就来介绍一下SpringSecurityJWT基于令牌的无... 目录引言一、JWT基本原理与结构二、Spring Security JWT依赖配置三、JWT令牌生成与

利用Python快速搭建Markdown笔记发布系统

《利用Python快速搭建Markdown笔记发布系统》这篇文章主要为大家详细介绍了使用Python生态的成熟工具,在30分钟内搭建一个支持Markdown渲染、分类标签、全文搜索的私有化知识发布系统... 目录引言:为什么要自建知识博客一、技术选型:极简主义开发栈二、系统架构设计三、核心代码实现(分步解析

Python Faker库基本用法详解

《PythonFaker库基本用法详解》Faker是一个非常强大的库,适用于生成各种类型的伪随机数据,可以帮助开发者在测试、数据生成、或其他需要随机数据的场景中提高效率,本文给大家介绍PythonF... 目录安装基本用法主要功能示例代码语言和地区生成多条假数据自定义字段小结Faker 是一个 python

Spring Security基于数据库的ABAC属性权限模型实战开发教程

《SpringSecurity基于数据库的ABAC属性权限模型实战开发教程》:本文主要介绍SpringSecurity基于数据库的ABAC属性权限模型实战开发教程,本文给大家介绍的非常详细,对大... 目录1. 前言2. 权限决策依据RBACABAC综合对比3. 数据库表结构说明4. 实战开始5. MyBA