有些非线性动画比线性动画更容易实现

本文介绍了在游戏开发中如何轻松实现非线性动画,特别是让物体从当前位置移动到目标点时的平滑效果。通过一个简单的Flash小技巧,仅用一行代码就能创建类似指数运动的动画效果,使物体移动更自然,提升用户体验。
摘要由CSDN通过智能技术生成

      动画可以让游戏体验更流畅。这里说的动画不是指骨骼动画或者精灵动画,而是变换动画(Transition, Tweening),一般用在用户界面、特效等方面。如果没有成熟的库或者编辑器的支持,开发动画通常是一件很麻烦的事情,尤其对非线性的动画,比如:加速、缓动、指数、碰撞、弹性等。这里介绍一种实现起来甚至比线性动画更容易的一个小技巧。

让一个物体移动到目标点

      有一个很简单的例子,为了让一个物体从当前位置移动到目标点,使用最简单的线性动画,我们需要在Update中加入:

Position += Vector2.Normalize(Target - Position) * Speed;

      但物体不能一直移动下去,所以我们要检测物体是否到了目标来让他停下来,所以上面的代码变成了这样:

if (Vector2.Subtract(Position, Target).LengthSquared() >= Speed * Speed)
    Position += Vector2.Normalize(Target - Position) * Speed;

      这并没有结束,因为物体的运动是离散的,你不能保证他最终正好落在的目标点,所以或许还得改成这样:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值