人物状态切换

在之前的新手教程中,我们是添加一个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)&&(image_index < _frame+1);

fram传入的是一个精灵的帧数,然而其它的乍一看还是一塌糊涂

  • game_get_speed(gamespeed_fps) 获取游戏的速度,就是FPS值
  • sprite_get_speed(sprite_index)用于获取精灵的速度

但是这两者互相影响,我们可以看一下帮助文档中对sprite_get_speed()函数的描述


此函数可用于检索sprite编辑器 Sprite Editor中为sprite资源定义的sprite速度。然后,返回的值可以被使用,例如,计算为不同的image_speeds绘制多少帧。请注意,根据在Sprite编辑器中应用的速度类型(每秒帧数或帧数),返回值将非常不同。下面两个例子说明了这一点:

  • 如果你有一个sprite,它每秒钟绘制1帧,将图像速度设置为0.5,它将以0.5帧每秒的速度绘制。如果你的游戏帧速率是每秒60帧,那么精灵会为每120个游戏帧绘制1帧。
  • 如果你有一个在每个游戏帧中绘制1帧并将图像速度设置为0.5的精灵,它将会在每个游戏帧中绘制0.5帧。如果你的游戏帧速率是每秒60帧,那么精灵将会为每60个游戏帧画30帧。

在使用sprite_get_speed_type函数定义sprite时,您可以找到动画速度的类型,您可以使用函数sprite_set_speed设置动画的速度和类型。


我们的动画默认是frames pre second,是第一种情况,所以这个sprite是测取精灵的帧率是15,游戏的是60,而image_speed我们已经设置为了0.8,然后这样,image_index的范围就是[3.8,4)。当然,我觉得我直接把判断条件改成3也没什么影响,我测了测,发现image_index一直在3到4之间波动,我现在还不确切的知道这是为啥。。。。

Alarm

Alarm在obj中相当于一个闹钟,当我们在其它脚本中设置.alarm[0] = _fram;意味着当这个Obj在播放动画时,达到第_fram帧(因为第一帧的编号是0,所以实际相当于是第_fram-1帧)触发这个alarm[0]脚本中的代码。这样可以做许多事。

我们可以设置一个随机时间,

alarm[1] = random_range(100,200) * game_get_speed(gamespeed_fps);

像这样,我们的目的是使敌人漫无目的的走走停停,涉及到的就两种状态,移动和静止,我们设置了一个空的Alarm事件,这样想让alarm触发就要等待不定时间,再转化为下一个状态。

飞天小狐(GMS2)ARPG学习笔记 2相关推荐

  1. 小五思科技术学习笔记之SSH

    下面介绍一下相关概念: SSH的概念: SSH的英文全称为Secure Shell,SSH使用TCP的22号端口,其目的是要在非安全的网络上提供安全的远程登陆和其他安全的网络服务, 为什么要使用SSH ...

  2. 微信小程序开发:学习笔记[8]——页面跳转及传参

    微信小程序开发:学习笔记[8]--页面跳转及传参 页面跳转 一个小程序拥有多个页面,我们可以通过wx.navigateTo推入一个新的页面.在首页使用2次wx.navigateTo后,页面层级会有三层 ...

  3. 微信小程序开发:学习笔记[9]——本地数据缓存

    微信小程序开发:学习笔记[9]--本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...

  4. 小猫爪:S32K3学习笔记09-S32K3之Safety简介

    小猫爪:S32K3学习笔记09-S32K3之Safety简介 1 前言 2 Safety相关硬件介绍 3 Safety相关软件介绍 4 Safety文章目录 END 1 前言   接下来,就要开始进学 ...

  5. 小猫爪:S32K3学习笔记05-S32K3之ADC

    小猫爪:S32K3学习笔记05-S32K3之ADC 1 前言 2 资源简介 3 ADC功能详解 3.1 ADC mux-mode channels 3.2 ADC内部框架 3.3 时钟源 3.4 通道 ...

  6. 小猫爪:S32K3学习笔记10-S32K3之EIM和ERM

    小猫爪:S32K3学习笔记10-S32K3之EIM和ERM 1 前言 2 EIM(Error Injection Module) 3 ERM(Error Reporting Module) 4 MCA ...

  7. 小猫爪:S32K3学习笔记11-S32K3之FCCU

    小猫爪:S32K3学习笔记11-S32K3之FCCU 1 前言 2 FCCU的功能框图 2.1 错误输入 2.2 时钟输入 2.3 FSM 2.4 FOSU 3 FCCU的状态机 4 MCAL配置 5 ...

  8. 【小猫爪】AUTOSAR学习笔记03-Communication Stack之CanIf模块

    [小猫爪]AUTOSAR学习笔记03-Communication Stack之CanIf模块 前言 1 CanIf简介 2 功能介绍 2.1 发送缓冲区 2.2 CAN Controller 模式控制 ...

  9. 小猫爪:S32K3学习笔记04-S32K3之LCU

    小猫爪:S32K3学习笔记04-S32K3之LCU 1 前言 2 LCU的框架 3 LC逻辑运算单元 3.1 input&output&sync&force 3.2 LUT b ...

  10. 小猫爪:S32K3学习笔记21-S32K3之SAF及其应用

    小猫爪:S32K3学习笔记21-S32K3之SAF及其应用 1 前言 2 SAF简介 3 SAF框架 4 SAF组件 4.1 eMcem和Bist 4.2 sReco 4.3 mSel 4.4 sBo ...

最新文章

  1. 关于img图片的onerror属性
  2. 深度学习和目标检测系列教程 14-300:训练第一个 YOLOv3 检测器
  3. 计算机网络实验(华为eNSP模拟器)——第六章 密码模式和AAA模式
  4. 后端:414 Request-URI Too Large解决方案
  5. matlab 非线性方程组画图,使用matlab进行非线性方程组求解
  6. input隐藏域赋值数组
  7. Botanical Dimensions:借助第九代智能英特尔® 酷睿™ 处理器实现独特沉浸式体验...
  8. 检测同心圆_两“心”携手,共抗心衰——“同心圆”心衰俱乐部走进临安图书馆~...
  9. 文本输入框的两种div+css的写法
  10. 慢病管理系统开发提升能区域医疗慢病管理服务吗
  11. Linux初级入门百篇--lsof工具
  12. AWS SAA 认证考试心得
  13. ecshop与shopex哪个更好?
  14. ES6-promise详解
  15. 极虎病毒:虎年第一猛毒详解
  16. 一年中所有节日的排列顺序_我国一年中的传统节日。(按顺序)
  17. 使用w查看系统负载 vmstat命令 top命令 sar命令 nload命令
  18. 移动的 ipcam 视频无处不在
  19. 一个前端程序员的日常
  20. Windows10/11登录免密码

热门文章

  1. 未来5年内, UWB技术或将成为室内定位的主流技术!
  2. 中山大学计算机在职研究生分数线,中山大学在职研究生的合格分数线不是很高吗...
  3. 期末前端web大作业:用DIV+CSS技术设计的动漫网站——关于我转生成史莱姆这件事 6页
  4. CTF(信息安全夺旗赛)学习网址
  5. 抽象数据类型线性表的定义与实现
  6. adobe acrobat pro dc 无法打开PDF_PDF编辑Acrobat Pro软件教程 Acrobat XI Pro 全面技能标准培训视频...
  7. STL 标准模板库—容器部分【C++】
  8. 20172305 2017-2018-2 《程序设计与数据结构》实验二报告
  9. SAP ABAP OO ALV全屏显示
  10. 不考研也有出路?教育部重要通知,事关第二学士学位!