原文地址:https://www.jianshu.com/p/17c761e45d62
有的时候,我们希望在动画执行到某一帧的时候,执行某些逻辑。
比如我们制作了人物倒地的动画,如下:
关于如何制作一个动画,请参考教程:Animation动画的制作和使用
![](https://i-blog.csdnimg.cn/blog_migrate/b39e5a061c26f9b36d5207896fc08c90.webp?x-image-process=image/format,png)
假设有一个需求是人物倒地时掉血,那么我们什么时候显示掉血的信息呢?
脑海中可能会闪过几个方案:
一开始播放倒地动画就展示,像下面这样?
![](https://i-blog.csdnimg.cn/blog_migrate/6bd00aca7fc91b8d3ca1c0b49cace6c6.webp?x-image-process=image/format,png)
还是等播放完动画再显示,像下面这样?
![](https://i-blog.csdnimg.cn/blog_migrate/a078cb495bb8a14b3bea316455408c0a.webp?x-image-process=image/format,png)
还是说在动画播放到某一帧时,显示掉血信息,比如,当人物的背部刚刚碰到地面的时候,显示掉血信息。
像这样:
![](https://i-blog.csdnimg.cn/blog_migrate/497521feb227ba62f384b9dac8f6ce60.webp?x-image-process=image/format,png)
那么,通过对比以上方案,你觉得哪一种方案比较合适呢?
我们可以看到,针对本次需求,第三种可能更为合适。
要做到这种效果,我们就需要在动画播放到指定的帧时,执行逻辑。
具体做法:
首先,我们需要制作一个动画:
关于制作动画的方法,请参考教程:Animation动画的制作和使用
![](https://i-blog.csdnimg.cn/blog_migrate/67af9c9f0d9606623c419b109b0d8036.webp?x-image-process=image/format,png)
我们点击想要执行逻辑的帧,也就是人物刚刚着地的一帧(点击蓝色的菱形),红色的竖线会移动过来:
![](https://i-blog.csdnimg.cn/blog_migrate/58dc22e44196e7a592aae89bc77bfcc5.webp?x-image-process=image/format,png)
点击左侧光标形按钮,在当前位置插入一个关键帧,插入之后会出现一个小白方块:
![](https://i-blog.csdnimg.cn/blog_migrate/2077b3298432638bbea69ee21ba322b5.webp?x-image-process=image/format,png)
插入成功之后,双击小白方块,会弹出如下窗口:
![](https://i-blog.csdnimg.cn/blog_migrate/d56592b8acae951924579311503abdd2.webp?x-image-process=image/format,png)
我们在FUNCTION栏中,填入我们想要执行的函数名,随意填即可。
该函数会在动画播放到这一帧的时候运行。
我们现在填入showBlood,如下:
![](https://i-blog.csdnimg.cn/blog_migrate/0793bd258a2343e4265dc3a4bcbc1749.webp?x-image-process=image/format,png)
填完之后直接关闭此窗口即可。
退出动画编辑模式,保存动画,开始编写代码。
关键代码如下:
![](https://i-blog.csdnimg.cn/blog_migrate/d4ef6488637937f9e06711a9e46c170c.webp?x-image-process=image/format,png)
这样,当动画播放到刚刚指定的那一帧时,showBlood函数就会作为回调函数执行了。
感谢阅读。
喜欢请关注作者微信公众号(独立游戏开发笔记):
![](https://i-blog.csdnimg.cn/blog_migrate/dbd31676037fe03c157cecfdc220b6ec.webp?x-image-process=image/format,png)