首页 > 其他分享 >Unity引擎2D游戏开发,实现跳跃动画

Unity引擎2D游戏开发,实现跳跃动画

时间:2023-12-14 17:22:07浏览次数:31  
标签:动画 落地 动作 2D Unity 参数 跳跃 Jump

image

由于跳跃动画分为了很多个部分,所以需要对每个部分进行重新命名。
接着,再将此动画分为两大类,一类空中动作(Jump animation),一类落地动作(Landing animation)

选择Player人物,在下方Animation中,新建动画

动画新建和命名规则,根据guide内的颜色分类来进行
image

新建动画混合树

由于动画太多,也进行了分类,则选用动画混合树(Blend Tree)。在Animator窗口中鼠标右击进行创建,并命名为Jump
image

操作动画混合树,加入之前创建的动画,并设置相关参数

右上角BlendType为混合参数类型,1D为单一参数、2D为2维向量参数。由于跳跃是需要通过Y轴参数来控制,因此在左侧窗口新建一个velocityY参数
image

接着,将之前创建的动画全部加入混合树,并且设置好Threshold值。此值为人物跳跃Y轴的变化值,BlueJump1 13为人物2D刚体内velocity Y轴为13数值时,该动画从BlueJump1开始播放
image

将新建的velocityY变量写入Animation C#代码中

将velocityY变量写入SetAnimation方法内,使其实时获取RigidBody刚体中Y轴速度的值

animator.SetFloat("velocityY", rigidbody.velocity.y);

对Animation的进入条件进行操作,并对新参数进行C#编码

跳跃动作只要离开地面在空中就开始执行,所以在左侧加入一个新的参数isGround
image

在PlayerAnimation C#代码中,写入新代码,进行实时赋值

animator.SetBool("isGround", physicsCheck.isGround);

根据需要,可以使跳跃动作优先级最高,从而让跳跃动作可以打断其他一切动作。那么就把Any State连接到Jump上,意为任何状态都可以进入跳跃动画。
image

并且在下方加入IsGround参数,并设置为false。意为,不在地面就执行Jump动画
image

然后把连线数值根据需要全部关闭。
image

因为人物落地动画是通过跳跃的空中动画进入的,所以将Jump动画连接到OnLand动画
image

连线数值
image

并且在下方,加入isGround参数。因为在空中才能进行落地动作,所以赋值为True
image

接着,落地动画进入待机动画
image

因为只要落地动画播放完毕,就可以进入待机动画,所以连线数值中,Exit Time设置为1,即完整播放一遍。
image

最后,落地动画播放与否,加一个条件。如果落地立即开始奔跑或者走路,凡是X轴方向有了速度,则不进行落地动画(因为会有落地动画在漂移的动作)。所以,将OnLand动画连接到Exit上。
image

只要X轴方向速度大于0.1,有速度了,就退出落地动画,并取消上面的参数。
image

标签:动画,落地,动作,2D,Unity,参数,跳跃,Jump
From: https://www.cnblogs.com/xinlindeyu/p/17901615.html

相关文章

  • Unity引擎2D游戏开发,实现按键行走
    既然是实现按下按键进行一个动作,比如行走动作。那么就需要在InputControl内加入按键,并通过C#代码调用这个按键绑定一个事件来实现此功能在InputControl内加入新的按键打开PlayerInputControl创建一个新的按键组,并绑定Shift(通过Shift键控制行走动作)通过C#代码调用按键,并实......
  • Chat2DB接入文心一言AI教程(原创教程,转载请注明)
    引言关于Chat2DB和文心一言是啥我就不赘述了,由于Chat2DB自带的ai有调用次数限制,所以想着接入百度的文心AI,但是由于网上没有找到相关的教程,此方法是本人研究了一段时间才弄出来的,顺便记录一下备忘,也希望对有同样需求有所帮助!一、注册并实名认证百度智能云账号百度智能云地址:点击......
  • gsap基础-JS动画库
    https://blog.csdn.net/m0_61662775/article/details/131430585https://blog.csdn.net/changbb/article/details/131675810学习文档简介GSAP的全名是GreenSockAnimationPlatform一直发展到今天已经是3.x版本,这是一个适用于现代浏览器的专业Javascript动画库核心语法......
  • Unity3D协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • Unity3D 如何读取策划给定的Excel表格详解
    前言Unity3D是一款非常流行的游戏开发引擎,它可以帮助开发者快速构建游戏并进行测试和发布。在游戏开发过程中,策划经常会提供一些Excel表格,这些表格包含了游戏中的各种数据,如角色属性、技能效果等等。那么,如何在Unity3D中读取这些Excel表格呢?本文将详细介绍Unity3D如何读取策划给......
  • Unity3D 开发中有那些提升效率的高级技巧详解
    Unity3D是一款强大的游戏开发引擎,它提供了许多功能和工具来帮助开发者提高效率。本文将详细介绍Unity3D开发中的一些高级技巧,包括资源管理、内存优化、代码优化以及性能调优等方面。对啦!这里有个游戏开发交流小组里面聚集了一帮热爱学习游戏的零基础小白,也有一些正在从事游戏开发......
  • Unity3D UDP协议怎样通过应用层来实现可靠性
    Unity3D是一款流行的游戏开发引擎,它提供了丰富的网络功能来支持多人游戏。其中,UDP(UserDatagramProtocol)是一种无连接的传输协议,它提供了高效的数据传输,但不保证数据的可靠性。本文将介绍如何通过应用层来实现UDP协议的可靠性,并给出技术详解和代码实现。对啦!这里有个游戏开发交......
  • Unity引擎2D游戏开发,创建人物动画
    给人物创建Animator动画组件在素材库新建Animation文件夹专门存动画相关的文件Animation文件夹中创建Player文件夹右击Player文件夹,创建AnimatorController将新建的AnimatorController赋予人物中Animator组件中的Controller选择Window,选择Animation,打开Animator窗......
  • Unity引擎2D游戏开发,解决空中无限跳跃以及黏墙问题
    一、解决空中无限跳跃解决空中无限跳跃的根本就是添加落地检测,即在地面上才能进行跳跃(二段跳功能以后再开发)在文件夹内新建PhysicsCheck物理检测脚本在里面开发人物物理检测相关功能添加isGround布尔值变量,接触地面则为1,空中则为0。以及两种检测变量:checkRadius检测半径......
  • Unity升级到2022版本后,打开Spine会卡住
    1)Unity升级到2022版本后,打开Spine会卡住2)iPhone在同时播放多个音效的时候会压低某些音源的音量3)在Y77手机上出现IMGSRV:GetMainShaderConstantBufferBaseAddress:Unsupported4)UE4打包后在部分安卓机型出现“花屏”这是第364篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖......