[ 分享 ] 8.DASH STATE(冲锋状态)
然后回到scr_move_state脚本内,设定计时器的值本系列是油管上的HeartBeast的[Beginner] Make an RPG课程的中文笔记,主要形式是截图的方式进行步骤上的说明。面向对象:GameMaker新手,以学习一门脚本编程语言,制作一个RPG游戏为目标的爱好者。
本节主要内容:
这一节需要达成的效果是,角色朝着当前的朝向,位移一小段距离,简称“冲锋”。
并且在冲锋过程中,遇到阻碍物(墙体,怪物)会停下来。
- 冲锋按键检测
- 创建DIR属性
- 创建SCR_DASH_STATE脚本
- 使用计时器
- 创建冲锋特效
冲锋按键检测
这里设置响应角色冲锋的按键为键盘上的C键和手柄上的X键
所以继续向负责按键检测脚本scr_get_input中,增加按键检测
创建储存角色朝向的变量dir
在obj_player中的create事件中,对dir进行初始化dir = 0;
以便在脚本中访问该变量属性
创建scr_dash_state脚本
(复制原来的scr_ move_state脚本代码),成为一个新脚本,命名为scr_dash_state
在scr_dash_state脚本内将获取dir和len的代码移除,再将动画控制代码也移除掉
将以下代码都移除掉
然后设置冲锋时,进行位移的固定冲锋距离:len = spd * 4;
只留下以下代码
然后回到scr_move_state脚本中来,检测是否按下了冲锋键,如果按下该键,则dash_key会在scr_get_input被更新为true.
这时会将状态变量state设置为scr_dash_state的脚本索引,那么在obj_player的step事件中,执行的脚本就变为冲锋
到此人物的冲锋就完成了,但是有一个问题是:“冲锋的结束我们没有做”,这会导致人物不受控制的固定朝一个方向冲锋,并且没有动画。
这是因为我们的只在obj_player的create事件中,对dir进行了初始化,而没有根据玩家输入来获取dir的值,所以讲scr_move_state脚本内的dir改成脚本变量(不使用var)
使用计时器
现在obj_player的计时器事件,里面不用写代码,只是代表创建了alarm[0]事件然后回到scr_move_state脚本内,设定初始化计时器变量alarm[0]的值然后回到计时器内,在触发计时器归0时,切换state状态变量:state = scr_move_state,这会结束冲锋状态,使角色回到响应移动的状态。
创建冲锋特效
这里说创建冲锋特效,实际指的是在角色原地创建一个和角色精灵图片相同的精灵图片,然后渐变透明并移除,这会在视觉上形成“残影”的效果。
先创建obj_dash_effect对象,然后在create事件中,初始化图片透明度
再在step事件,进行逐渐消失的处理(逐帧减少透明度)
然后回到scr_dash_state脚本中,在每调用一次scr_dash_state脚本,就创建一个在原地会自动消失的残影
通过计时器归0切换状态变量为scr_move_state脚本,来停止瞬移