GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

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

[ 分享 ]13.Adding Enemy States(怪物状态)--待机、闲逛、追击

Linpean 2017-12-12

我们本系列是油管上的HeartBeast[Beginner] Make an RPG课程的中文笔记,主要形式是截图的方式进行步骤上的说明。面向对象:GameMaker新手,以学习一门脚本编程语言,制作一个RPG游戏为目标的爱好者。

本节的主要内容为:

  • 创建怪物的闲逛、追击状态
  • 闲逛:在没有发现玩家时,随机选取地图上的一个点作为目标点进行移动
  • 追击:在发现玩家角色时,以玩家角色的坐标作为目标点进行移动


初始化怪物的属性

在obj_enemy_slime对象中创建alarm事件


然后在create事件中,创建怪物的属性:视野、目标点x坐标、目标点y坐标,速度、默认状态



创建脚本组


创建3个脚本组,依次为Helper Scripts、Player States、Enemy States。然后将对应的脚本移动到对应的组内。



创建闲逛和追击脚本


修改追击脚本

移除obj_enemy_slime的step事件中的移动代码,添加执行脚本状态。

这是因为我们需要将负责追击玩家角色的代码转移到scr_enemy_chase_state脚本中单独负责,保持模块的独立性。


在cr_enemy_chase_state脚本加入追击代码


创建怪物状态切换脚本



利用choose语句,在wander(闲逛)和idle(保持不动)之间的状态选择一个。在选择了状态后,马上将alarm[0]初始化,以便下一次触发选择脚本


即一旦alarm[0]减少到0,则在wander和idle两个状态中,选取一个,在选取后,直接重置alarm[0]的值。


创建检测玩家脚本来执行追击逻辑

创建脚本scr_check_for_player脚本来检测怪物的视野内是否有玩家角色



在idle状态中添加检测玩家执行代码

优化scr_check_for_player脚本

在找到玩家时,设定targetx和targety,对应在scr_enemy_chase_state中移除obj_player.x的引用。改为引用targetx.



创建wander代码

同样的,targetx在check检测脚本中已经完成,这里只是执行移动即可



总结一下:





近期喜欢的会员

 

加入 indienova

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