人物状态切换
在之前的新手教程中,我们是添加一个Animation End的脚本,在里面更改人物的标记变量,然后再在Step里更改人物状态,但是判断条件比较复杂,这是代码的优化问题,所以在这次学习中就优化了这种判定方式(代码真的十分精妙,比起以前面向过程的代码,真的系统了许多,无论是维护还是阅读起来都方便了许多)
对于一个obj,我们可以添加许多User Event *脚本,然后在Step中用event_user(*)来调用这些函数,这样每个User Event *脚本里有相对应的状态代码,在Step中只需要通过标志变量来选择不同的代码块即可,这个教程的代码很多时候都巧妙地把状态与数字相联系在一起,包括后面的User Event函数的标号也联系在一起,真的是给我打开了一个新的切换方式。
Game_speed,Sprite_speed,Image_speed
这几个变量一定要仔细分辨清楚,在进行人物切换的时候就出现了问题,在我由人物攻击向人物移动的状态转移的时候,当移动和攻击键同时按下去的时候,有可能一直卡在攻击状态,无法切换成移动状态,文档判定条件是image_index == 3,然后呢。。。。这个image_index并不一定是整数,因为一些原因有可能会比3稍微大些,如果是3.2这种情况的话,就会不满足这个判断条件,然后就一直卡在攻击状态,不会切换到移动状态,不过呢,我发现可以将判定改成 >=3即可,不过呢,教程上呢,用了一个新函数来进行判断。
//@arg fram
var _frame = argument0;
var _speed = game_get_speed(gamespeed_fps)/sprite_get_speed(sprite_index);//获取 游戏帧数/精灵帧数
return (image_index >= _frame+1 - image_speed/_speed)&&(im