gamemaker吧 关注:13,622贴子:94,863

【福利】缓动源码·做动画很简单啦

只看楼主收藏回复

最近做rpg,遇到动画有点捉急,如果不是序列帧动画,那就得用代码控制,要么步事件,要么timeline,或者alarm,追加变量,很恼火。
于是就编写了一套缓动代码。效率大大提高,一个运动,简单一句代码就行了。
而且不用timeline步事件什么的。
思路就是创建一个控制体,利用控制体步事件,遍历所有缓动,然后执行缓动。当所有缓动执行完成,删除控制体
,一旦有对象调用缓动,如果没有控制体,再生成控制,执行控制体步事件.......
源码后面放,写了一整天,各种测试,BUG应该没有,至少目前没发现,先看看效果


1楼2017-10-24 19:25回复

    在物体创建事件中,调用缓动,看第一行参数。id就是对象,“x”就是本地属性,2是缓动种类,这里是反弹,我编写了10个常见的缓动,400-x,表示变化的量,执行之后就是x到400,继续参数1表示delay延迟缓动,1表示缓动持续时间,后面两个参数单位都是秒,两行代码就是先做Y洲的缓动,再做x轴缓动,因为x延迟的时间,刚好等于y的缓动时间,效果


    2楼2017-10-24 19:30
    收起回复
      加入第二个测试实例,创建事件中添加旋转和透明度缓动,用的都是back效果

      效果


      3楼2017-10-24 19:32
      回复


        4楼2017-10-24 19:33
        回复
          新建一个obj,创建事件调用30个缓动,效果是elastic,ob_test4是个只有图像的空事件对象

          效果


          5楼2017-10-24 19:37
          收起回复
            这次反弹,ob_test4没有任何事件

            效果


            6楼2017-10-24 19:39
            回复
              编辑一个散花效果

              效果


              7楼2017-10-24 19:41
              回复
                缓动的使用,我都注释的很清楚


                8楼2017-10-24 19:42
                回复
                  源码来了


                  9楼2017-10-24 19:44
                  回复
                    把TWEEN_CODE夹子中的缓动代码,复制到你的游戏中,别忘了还有一个执行步事件的控制体,只需要ob_tween_ctrl,下面几个事测试用的。


                    10楼2017-10-24 19:46
                    回复
                      厉害了,顶一个


                      IP属地:上海来自Android客户端13楼2017-10-24 21:47
                      收起回复
                        dd


                        IP属地:浙江来自Android客户端14楼2017-10-24 22:21
                        收起回复
                          666 厉害啊


                          IP属地:浙江来自Android客户端16楼2017-10-24 22:40
                          收起回复
                            完善了下对缓动的直接操作,添加了两个新的方法进去。
                            1,我们有时候想让缓动跳过,直接执行结果怎么处理,比如做消星星,鼠标点击消除,我们给它缓动,但是如果玩家点击得很快,显然我们的缓动跟不上节奏,于是乎,这个直接执行变化后的结果方法就显得很重要。
                            2,还有一些时候,我们想让缓动结束后,干一些事情,要怎么办,由于我们不想把检测缓动是否完成的代码放到步事件中去,于是就编写了一个回调函数的设置,预先设置好缓动完成后执行的代码,当缓动执行到最后,会自动帮我们执行之前设置的代码。恩就这样,2.0版本发布。

                            添加两个很重要的方法,然后我对房间内缓动执行的时候,所有信息是如何维护的,都进行了注释,很容易理解。


                            17楼2017-10-25 11:35
                            回复
                              厉害厉害,效果很棒啊


                              IP属地:陕西来自Android客户端20楼2017-10-26 09:20
                              收起回复