手册:鼠标与模拟摇杆

关于本手册

本手册讲解 ACTION GAME MAKER 中处理鼠标与模拟摇杆的功能。

ACTION GAME MAKER 中鼠标・摇杆的概要

按键的按下可以用「输入相关的条件(InputCondition)」来处理,但像鼠标坐标或摇杆倾斜度这种「带有方向和量的输入」,仅靠它是处理不了的。为此准备的就是以下功能。

功能 种类 能做什么
鼠标操作(MouseInput) 条件 判定鼠标按键的状态、光标位于何处、光标是否移动了
将鼠标信息赋值给变量(GetMouseInput) 动作 把光标的坐标・移动量・从自身看去的角度和距离存入变量
将摇杆输入赋值给变量(GetStickInput) 动作 把摇杆的角度・倾斜量・X/Y 分量存入变量
鼠标/摇杆角度联动设置(ChangeAngleSettings) 设置节点 让节点的角度配合光标或摇杆的方向进行旋转

除此之外,既有的功能中也有使用鼠标・摇杆的选项(参见后述的「在其他功能中使用」)。

另外,鼠标的坐标会因「从哪个图层来看」而变化。处理世界坐标时,以目标对象自身为基准来获取才是正确的做法。这 4 项功能都是以自身(执行的对象)为基准进行计算的。

「鼠标操作(MouseInput)」

这是与鼠标相关的条件,位于「添加其他条件」的「鼠标」分类中。

  • 判定内容:从「按键的状态」「光标位于自身之上」「光标位于指定对象之上」「光标位于指定范围内」「光标移动了」中选择。
  • 鼠标按键:选择「按键的状态」时,从「左键」「右键」「中键」「扩展键1」「扩展键2」中选择。滚轮无法处理。
  • 输入的条件:从「按住」「刚按下瞬间」「松开」「刚松开瞬间」中选择。
  • 输入接收帧数:视为「瞬间」的帧数。
  • 判定范围:用什么来判定光标是否落在上面。从「墙壁判定」「受击判定」「指定半径」中选择。被禁用的判定不计入。
  • 判定半径:选择「指定半径」时的半径(px)。以距对象原点的距离来判断。
  • 目标对象的路径:选择「光标位于指定对象之上」时的目标。
  • 判定的范围 / 范围的基准:选择「光标位于指定范围内」时的范围及其基准(「画面坐标」或「世界坐标」)。
  • 视为移动的移动量:选择「光标移动了」时,在画面上移动多少 px 才算移动了。

鼠标按键请用这个条件来判定。经由输入相关的条件(输入映射)的鼠标按键,在第 2 名及之后的玩家身上不会有反应。

「将鼠标信息赋值给变量(GetMouseInput)」

这是把光标信息存入变量的动作,位于「添加其他动作」的「开关/变量」分类中。由于每帧都会赋值,使用数值的一方总能看到最新的光标信息。

  • 赋值目标:写入数值的对象。从「自己」「指定的对象」「指定锁定对象」「父对象」「最后接触的对象」「共享数据板的对象」「项目变量」中选择。整个动作只选择 1 个,所有数值都会写入同一个对象。
  • 赋值世界 X 坐标 / 赋值世界 Y 坐标:游戏世界中的光标位置。由于是以自身为基准测量的,会考虑所属的图层。
  • 赋值画面 X 坐标 / 赋值画面 Y 坐标:画面上的光标位置(px)。
  • 赋值横向移动量 / 赋值纵向移动量:光标自上一帧起在画面上移动的量(px)。
  • 赋值角度:从自身到光标的角度。0 度为右,90 度为下。光标与自身重叠期间角度无法确定,因此会保留之前的值。
  • 赋值距离:从自身到光标的距离(px)。
  • 各自的赋值目标:为上面勾选的每个项目,选择要写入的变量名。

「将摇杆输入赋值给变量(GetStickInput)」

这是把模拟摇杆的输入存入变量的动作,位于「添加其他动作」的「开关/变量」分类中。它会从分配给上下左右的输入动作组装出输入向量,应用圆形死区后再赋值。与单纯判断有没有按下不同,可以使用精确的角度以及「倾倒了多少」。

  • 上方向的输入 / 下方向的输入 / 左方向的输入 / 右方向的输入:分别作为各方向处理的输入动作。可以从添加到项目输入映射中的动作里选择。
  • 死区:以圆形应用的死区。设为负值时,会使用 4 个输入动作上所设置死区的平均值。
  • 赋值角度 / 角度的赋值目标:输入的角度(度)。0 度为右,90 度为下。没有输入期间角度无法确定,因此会保留之前的值。
  • 赋值倾斜量 / 倾斜量的赋值目标:以 0.0 到 1.0 接收倾倒的程度。可以实现用倾斜度区分走路和奔跑之类的用法。
  • 赋值 X / 赋值 Y 及各自的赋值目标:以 -1.0 到 1.0 接收输入的 X 分量和 Y 分量。X 为右侧为正,Y 为下方为正。

「鼠标/摇杆角度联动设置(ChangeAngleSettings)」

这是让节点的角度配合光标或摇杆方向旋转的设置节点,作为对象的子节点放置使用。用于把炮台或手持武器指向瞄准的方向。

  • 指定目标节点:要旋转的节点。
  • 使用左摇杆 / 使用右摇杆 / 使用鼠标:角度的输入来源。
  • 使用移动方向:以对象的移动方向作为输入。在尚未移动期间会使用即将移动的方向,因此生成后立刻就能反映角度。
  • 使用视线方向:以视线的方向作为输入。
  • 基础角度:角度的调整。指定素材的正面相对于右方(0 度)偏离了多少。如果素材是朝上绘制的,就填入 -90。
  • 添加节点旋转:打开后会叠加到节点原本的角度上。
  • 向上最大角度 / 向下最大角度:可旋转的范围。两者都设为 180 则没有限制。

在其他功能中使用

功能 设置 内容
移动对象(MoveObject) 移动类型 = 鼠标光标 朝光标的位置移动
设置模板移动(MovementTemplates) 模板移动类型 = 追随鼠标光标 持续追赶光标。关闭「贴合到光标位置」后,会以移动速度追赶
更改视线方向(ChangeFaceDirection) 朝向鼠标坐标 把视线的方向指向光标
子弹的飞行方式(子弹数据库) 朝瞄准(摇杆 / 鼠标)方向飞行 选择瞄准的输入来源(左摇杆 / 右摇杆 / 鼠标)。也可以指定「未倾倒摇杆时使用鼠标」
放下・投掷举起的对象(ReleaseCarriedObject) 方向的指定方式 = 瞄准的方向 同样可以选择瞄准的输入来源

实用示例

用鼠标瞄准并射击

  • 在玩家的子级放置「鼠标/摇杆角度联动设置」,把目标节点指定为枪的节点,并打开「使用鼠标」。素材朝右的话,基础角度保持 0 即可。
  • 把子弹数据库的飞行方式设为「朝瞄准(摇杆 / 鼠标)方向飞行」,瞄准的输入来源设为「鼠标」。
  • 用「鼠标操作」条件查看左键的「刚按下瞬间」,转换到发射动作。

同时支持摇杆和鼠标

  • 把子弹瞄准的输入来源设为「右摇杆」,并打开「未倾倒摇杆时使用鼠标」。
  • 倾倒摇杆时朝那个方向飞,未倾倒时则朝光标的方向飞。这样用手柄或鼠标都能玩。

点击会有反应的对象

  • 用「鼠标操作」条件把判定内容设为「光标位于自身之上」,查看光标是否落在上面。判定范围用「受击判定」或「指定半径」比较好处理。
  • 在同一节点上再加一个「鼠标操作」条件(按键的状态・左键・刚按下瞬间),在两者都满足时做出反应。

追赶光标的敌人

  • 在设置模板移动中选择「追随鼠标光标」,关闭「贴合到光标位置」,让它以移动速度追赶。
  • 如果想让它紧贴光标(把光标本身做成对象),则打开该选项。

用倾斜度区分走路和奔跑

  • 用「将摇杆输入赋值给变量」把倾斜量存入变量。
  • 用变量的条件查看「倾斜量大于等于 0.7」,转换到奔跑的动作。

注意事项

  • 鼠标按键的判定请使用「鼠标操作」条件。把鼠标按键注册到输入映射中、用输入相关的条件来查看的话,在第 2 名及之后的玩家身上不会有反应。
  • 世界坐标会随观察位置(图层)而变化。把存入某个变量的世界坐标,让另一图层的对象直接使用是对不上的。在每个需要坐标的对象上用「将鼠标信息赋值给变量」重新获取才最可靠。
  • 如果紧贴光标的对象是摄像机的追随目标,摄像机和对象会互相推挤而发散,画面可能会飞出去。请同时使用摄像机的「拖拽边距」和「位置平滑」(新建项目中默认启用)。「限制」则会适得其反。
  • 角度在没有输入时无法确定,因此在此期间会保留之前的值(不会回到 0 度)。想把「没有输入」作为条件时,请查看倾斜量或距离。
  • 摇杆的死区由项目设置中的各个输入动作决定。「将摇杆输入赋值给变量」可以把死区指定为圆形,因此斜向输入手感不对时请在这里调整。
  • 滚轮的按下与释放会在同一帧到来,因此「鼠标操作」条件无法处理。