GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

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

RPG_Basic(29):AI优化

Linpean 2017-10-22

Youtube视频地址:HeartBeast

实现效果为

Image title

首先打开obj_enemy_slime,在Create事件中,删除test变量,并将变量targetx,targety(基于向目标的方式来移动)改为xaxis, yaxis(基于渐近的方式来移动)


打开scr_enemy_choose_next脚本,在现有的代码,可以看到怪物巡逻的地点,是在房间内随机选取一个点。现在要做一个改变,将target_x个target_y的代码移除


换成xaxis, yaxis,在怪物处于巡逻的状态,选取一个新的移动轴来进行移动

同样的,scr_idle_state脚本不用更改,但怪物巡逻时每帧检测玩家的scr_check_for_player脚本,也要修改targetx,  targety为xaxis,  yaxis,



在scr_enemy_chase_state和scr_enemy_wander_state追击角色的脚本也同样要替换,并且移除掉条件


这样修改以后,会发现怪物巡逻的脚本scr_enemy_wander_state和怪物追击的脚本scr_enemy_chase_state脚本是一样的。


所以为了方便调用,新建一个脚本scr_move_axis(),来作为向着某个移动轴进行移动



此时保存代码,运行游戏会发现,怪物只会自由移动,而不会追击角色

Image title

这是因为在scr_move_axis()脚本中,怪物获取方向的代码不对。

因为xaxis和yaxis已经不再是某个坐标的xy值了,如果仍然用point_direction( x, y, xaxis, yaxis)当然是错的。

xaxis和yaxis实际上应该看待为移动速度的分量,所以这里直接改为point_direction( 0, 0, xaxis, yaxis)即可修复。


导入新的怪物精灵图片,全选所有图片,将其拖入GMS2的工作区

然后依次命名名称Name,设置图片原点Origin

spr_chinlin_run_up        

spr_chinlin_run_down   

spr_chinlin_run_right

spr_chinlin_stand_up

spr_chinlin_stand_rightS 

复制obj_enemy_slime,将复制后的副本对象重命名为obj_chinlin,设置精灵图片为obj_chinlin_stand_right

并设置碰撞形状



 由于该怪物对象是从obj_lifeform_parent继承而来,只具有最基本一些属性(例如死亡),如果想要额外的属性,可以创建一个从obj_lifeform_parent继承的怪物父对象,然后该怪物对象从怪物父物体继承就可以了,但这里只不打算额外增加了。


和角色创建movement和facing类似,这里也要在obj_enemy_chin的create事件里创建。首先新建一个宏变量IDLE


然后使用方向,状态变量,和二维数组来更新精灵子图片


 由于额外增加了IDLE的状态,所以在scr_enemy_stall_state和scr_enemy_idle_state脚本需要为状态movement赋值



因为在移动时,我们只导入right方向上的精灵图片,这里利用sign函数,根据实例移动方向,对对象的精灵进行水平翻转,并且更新了movement为MOVE


修改函数scr_get_face脚本,添加一个参数作为脚本参数

但是因为在obj_player也使用了scr_get_face()脚本,这里改为传参的函数,那么其他地方也要跟着改变,怎么批量更改呢,这里可以按快捷按钮 Ctrl + Shift + F.会呼出一个弹窗,在弹窗搜索栏,直接输入scr_get_input搜索,会得到搜索结果




然后在obj_enemy_chinlin的step事件中也添加更新精灵索引代码


把obj_enemy_chinlin对象拖入房间,运行游戏即可看到效果

Image title










近期喜欢的会员

 
jiaoshou827 2017-12-26

你在哪找的素材呢?这个宠物好可爱

 
Linpean 2018-01-02

jiaoshou827 youtube主自己提供的素材

 

加入 indienova

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