GameMaker Studio 2

创建于:2017-04-19

创建人: dougen

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

RPG_Basic(6):BETTER PLAYER MOVEMENT(优化角色移动)

Linpean 2017-10-27

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

本节主要内容:

  • 创建移动轴变量,来优化角色移动
  • 为什么要优化角色移动,因为之前的移动时垂直速度和水平速度是完全独立,它们仅受各自的按键输入影响,这就导致,斜线运动时,水平和垂直方向都有速度,斜线合速度显然快于这两个速度,而我们需要的是人物朝任意方向移动,速度 都是一致的,这才会让玩家得心应手的控制和移动。

在obj_player的create事件中,创建新变量

  • hspd水平速度分量
  • vspd垂直速度分量
  • len位移


然后将原来在scr_move_state脚本中的移动代码批量注释掉(四个if语句和stop动画语句),然后使用轴向变量yaxis和xasix来进行移动

  • xaxis为正,往右移动,xaxis为负,往左移动,并且xaxis的值大小决定水平速度的大小
  • xaxis为正,往右移动,xaxis为负,往左移动,并且yaxis的值大小决定垂直速度的大小
  • spd作为系数来调整速度大小··


到这里,人物是可以移动了,但是人物没有动画的

Image title

需要重新进行动画处理(在scr_move_state进行如下处理)

  • 根据yaxis和xaxis的值,来计算移动方向dir
  • 根据yaxis和xaxis的值,来判断是否需要进行移动
  • 通过lengthdir_x获取在x轴上的分量速度


  • 然后根据len的值来设置是否进行播放动画(image_speed是否等于0),image_speed_player作为系数调整
  • 如果len为0,就需要设置image_speed=0,停止动画,因为角色在停止时,是静止的(除非需要播放原地待机动作,不然就是如此处理image_speed=0,image_index = 0)
  • 接下来是根据vspd和hspd的正负值,来设置角色的精灵图像


注意顺序对精灵动画的影响,这里hspd的代码在后面,也就是说当你按下斜向上的按键时,

会是水平方向的精灵动画(因为一旦有水平速度,在代码的最后,精灵动画最后就会被设置为spr_playe_right或者spr_player_left)


到此角色移动就优化完了


近期喜欢的会员

 
疾风之盖尔 2018-02-24

你好,我有个疑问,在Control the sprite部分,sign(len)好像并没有起到什么作用,image_speed只需要等于0.2就足够了,当len=0时,后面的代码会将image_index变成0,这个时候图像就已经停止了,image_speed没有发挥出作用。我自己写的代码是这样的:Image title

然后打开游戏后精灵的行走时正常的,所以我没明白sign(len)在这里发挥的作用,求解答,谢谢。

 
Linpean 2018-02-24

疾风之盖尔 实际上sign(len)就是没用的,原来以为是用来根据len的正负来对image_xscale进行反转的,但实际上没啥用,删除掉就可以了,是我忘记删除了。

 

加入 indienova

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