GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

190 信息 1082 成员
游戏开发工具 GameMaker Studio 2 的讨论小组

[ 分享 ] 8.DASH STATE(冲锋状态)

Linpean 2017-11-01

然后回到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脚本,来停止瞬移


近期喜欢的会员

 

加入 indienova

  • 建立个人/工作室档案
  • 建立开发中的游戏档案
  • 关注个人/工作室动态
  • 寻找合作伙伴共同开发
  • 寻求线上发行
  • 更多服务……
登录/注册