前言
跟着Heart Beasts的横版射击游戏制作教程走到了第五章,渐渐发现脑子有点跟不上啊,事件太多,套路(方法的使用方式)太多,文科生伤不起。
这次的学习笔记试着换个思路来写,第一篇有点太偏向于基于官方文档对方法的解读,而没有结合实例,而本身学了一段下来发现难点不在于对方法的记忆,而是对方法的活学活用及灵活的表达式编写,所以这篇会试着从实践的角度来对一些学习中遇到的问题进行记录。
自建脚本的创建和使用
自建脚本的就是:将可以多次复用的代码写到脚本中,以方便后期的复用。
教程中多次使用到place_meeting这个碰撞检测方法,所以将其编写成名为“move”的脚本,如下:
但是这里有一点到现在还没弄明白,脚本中的检测对象始终是o_solid对象(墙体对象),但是教程有将这个脚本运用到敌人与敌人的碰撞检测中,这里记录下,希望后续能够弄明白这一点。
状态机(event_user方法)
就是可以赋予一个对象多个状态的机制(自己解读LOL),用好状态机,可以让自己的代码在后期回溯修改或者debug的时候更方便,换句话来说就是加强代码的可读性。比如在最开始我们在step事件里面需要去写对象的移动、对象的攻击、对象被击中的状态等,但是用状态机,就可以将不同事件的代码分配到不同的状态机当中,这样在step事件中只要去调用不同的状态即可。
灵活运用方法
教程中有个地方是要判断一个对象速度减弱到无限趋近于0的时候,就会切换状态机状态,正常可以在hspeed_push和vspeed_push的值等于0或者<1的时候的条件判断去做状态切换这里Heart Beasts用了一个我觉得很聪明或者说取巧的方法(膜拜大神)来做到判断。
point_distance方法本来是用来返回两点间距离的,前两个参数是A点的x,y坐标,后两个参数是B点的x,y坐标,这里就很聪明的让A点是0,0,而B点的参数是对象在x,y方向上的速度,通过这种方式来返回速度当前速度,真的是绝妙。。。
以上是本次的笔记,感触最深的是第三点,这就是在前言说的套路吧,同样的方法可以有许多实用方式,关键在于你能得到想要的变量和判断结果。