gamemaker吧 关注:13,671贴子:95,425

BUFF效果大家是怎么做的

只看楼主收藏回复

BUFF效果有很多种大致分为费血,和状态。
比如,被子弹打到会减速之类的很好做,但是咱不知道这个减速的代码写在哪。
应该写在每个敌方单位里还是应该单独拿出来?


IP属地:湖北1楼2011-05-13 00:30回复
    http://tieba.baidu.com/f?kz=788542275


    IP属地:四川2楼2011-05-13 00:54
    回复
      2025-07-16 01:11:55
      广告
      一看减速就想到那帖~


      IP属地:山东3楼2011-05-13 07:49
      回复
        哈,我当年除了减速还制造过冰冻效果,中了冷冻后指定时间内不能移动,也不能攻击,过了时间后才能恢复。
        但是悲催的是,有一种敌人是一种植物,原本就是不会动的,只会原地发子弹。中了我的冷冻之后,不能发子弹了。可灵异的是,过了一段时间竟然跑起来了。当时看到这个场景差点笑喷我了。还是考虑不周哈。


        IP属地:河南4楼2011-05-13 10:28
        回复
          也就是说,把各种BUFF效果写进一个OBJ里,然后让其他的实例继承它?
          T大的穿透效果没看懂,怎么才能达到碰撞过的每个单位只受到一次伤害,而不是
          碰撞时一直受到伤害?
          是在碰撞时新建一个只持续一瞬间的OBJ来碰撞检测,然后销毁么?


          IP属地:湖北5楼2011-05-13 16:45
          回复
            第一个问题我在帖子里写了的~最好是使用脚本代替,计时器你可以利用变量来代替。
            穿透效果有很多办法能够达到,我这里使用的是传统的“硬值”方式~也就是在击中目标后,目标有一定时间内是无法再次被击中,类似于保护值。


            IP属地:四川6楼2011-05-13 17:09
            回复
              脚本里是怎么实现计数器的?如果建一个变量在脚本里当做计数,
              那么是不是每次运行脚本都会建立变量而达不到计数的效果?


              IP属地:湖北7楼2011-05-13 19:15
              回复
                变量是可以在自己不存在的情况下创建自己的哦~参考GML语言->游戏运行->复杂的变量和函数~


                IP属地:四川8楼2011-05-13 19:29
                回复
                  2025-07-16 01:05:55
                  广告
                  比较蛋疼的方法- -
                  创建一个buff obj,拥有较高的depth或者干脆在step begin里执行buff的数据变更,然后在step end里还原。buff持续时间就是obj的存在时间
                  说到穿透- -咱当年的方法是直接在子弹obj里加一个“伤害过”目标的list……


                  IP属地:上海9楼2011-05-13 19:54
                  回复
                    脚本scr_time:
                    if(variable_local_exists("i"))
                    {i+=1;}
                    else{ i=0;}
                    if(i==60){instance_create(x,y+30,obj_weapon);i=0;}
                    像这样用variable_local_exists判断然后新建?
                    这样写为什么创建不了i?


                    IP属地:湖北10楼2011-05-15 22:40
                    回复
                      没有发现异常
                      还有基于variable_系列函数很慢的原因 不推荐使用


                      IP属地:广东12楼2011-05-15 22:54
                      回复
                        if !(variable_local_exists("i"))
                        {i=0;}
                        这样才是创建~


                        IP属地:四川13楼2011-05-15 22:57
                        回复
                          很慢+1- -极度不推荐用于step中
                          对对多个buff的定时可以依靠list- -数据结构是好东西噶


                          IP属地:上海14楼2011-05-16 10:05
                          回复
                            如何用脚本来实现计时器的功能?
                            目前咱只会在OBJ里新建一个变量然后在脚本里操作,但是不能把脚本单独提出来使用。


                            IP属地:湖北15楼2011-05-25 19:00
                            回复
                              2025-07-16 00:59:55
                              广告
                              随便定一个变量,比如我叫他step
                              需要的时候,step=buff持续时间(帧)
                              然后step里:step=max(0,step-1);
                              最后,if(!step),移除buff
                              变量可以用任何你想得到的方法代替(数组,线性表,哈希表……),只要这玩意儿是变量就行了


                              IP属地:上海16楼2011-05-25 19:08
                              回复