映射控制输入
描述
使用 Map Control Inputs 为你已在使用的输入添加控制器、键盘或鼠标支持。角色会保留 Joystick Controlled 中的移动设置。跳跃会保留 Jump with Button 中的设置。自定义触控操作会保留现有的行为连接。
每一行都会将一个现有的 Input 连接到你所选 Device 中的一个 Mapped Control。你可以选择输入对应的对象,也可以从受支持的行为中拖动 Input 输出。当同一操作需要支持多种设备时,可以添加更多行。
原有的触控控制仍然有效。
为现有摇杆添加控制器支持
从已使用 Joystick Controlled 的角色开始。保持 Object A 设置为摇杆,Object B 设置为角色。
在此图中,REUSE 标记表示复用现有行为。绿色箭头表示将数据拖入属性。白色连接用于连接行为。这两个行为会随场景启动,因此本示例不需要在它们之间建立白色连接。
- 添加 Map Control Inputs。将 Player 保持为 1,并让它在场景启动时运行。
- 选中 Map Control Inputs,打开其属性。
- 将 Joystick Controlled 上的绿色输出图标拖到第一行的 Input 中。在输出列表中选择 Input。
- 将 Device 保持为 Controller,并将 Mapped Control 设为 Left Stick。在 Name (optional) 中输入 Move。
- 点按 + Add Input,并在弹出菜单中选择 Keyboard。将同一个 Joystick Controlled · Input 拖入此行。
- 将第二行的 Mapped Control 设为 Arrow Keys。名称也填写 Move。
拖动时请使用源行为上的绿色图标。接收输入框内的绿色按钮会创建 Change Input Field 行为。
此 GIF 展示了第一行 Move:将摇杆的输出拖入 Input,然后从列表中选择 Input。该行的 Device 为 Controller,Mapped Control 为 Left Stick。Keyboard 行也使用相同的操作方式。
连接受支持的控制器,然后运行你的项目。移动左摇杆应该会按照相同的 Joystick Controlled 设置来控制角色。也可以试试方向键和屏幕上的摇杆。行走速度、加速度、启用的方向、旋转和动画仍由 Joystick Controlled 控制。
Input 标识要复用的控制。 在此处,它标识的是 Object A,也就是摇杆。即使你还没有移动摇杆,它也可用。角色的 objectB_ID、摇杆的 x 和 y,以及白色事件连接各有不同用途。为此映射选择 Input。
属性
两行都复用同一个摇杆。Controller 行读取 Left Stick;Keyboard 行读取 Arrow Keys。
点按 + Add Input,在添加行之前选择 Controller、Keyboard 或 Mouse。随后,Mapped Control 会显示与该设备兼容的选项。之后也可以更改该行的 Device。
| 属性 | 设置内容 |
|---|---|
| Player | 正整数玩家编号。默认值为 1。Controller 行读取分配给该玩家的控制器。若要设置另一位玩家的控制,请使用单独的 Map Control Inputs 行为,并将其设为 Player 2。 |
| Input | 选择一个按钮或摇杆对象,或者从受支持的行为中拖动 Input。新行默认为空。对于 Jump with Button 和 Shoot with Button,Input 标识的是它们的按钮,而不是角色。 |
| Device | Controller、Keyboard 或 Mouse。此选项会将 Mapped Control 限定为相应设备。更改此项会保留 Input 和名称,然后为新设备选择一个兼容的控制项。 |
| Mapped Control | 提供输入的物理控制项。可选项取决于 Device 和所选的 Input。对于新建的按钮行,默认值分别为该设备的 Bottom Button (A / ×)、Space 或 Left Mouse Button。选择摇杆后,可在同一设备中选择兼容的移动控制项。 |
| Name (optional) | 用于 Controls 叠加层的标签,例如 Move、Jump 或 Shoot。默认为空白。名称不会改变游戏玩法。 |
| + Add Input | 打开包含 Controller、Keyboard 和 Mouse 的弹出菜单。选择一项,即可添加该设备对应的一行。关闭弹出菜单则不会添加任何内容。使用多行且设置相同的 Input,即可为一个操作提供多种替代控制方式。 |
| Remove Input | 移除该行。其他行仍会提供各自的替代控制方式。 |
| Up Key、Right Key、Down Key、Left Key | 当 Mapped Control 为 Custom Movement Keys 时显示。为每个方向选择一个按键。默认值依次为 Up Arrow、Right Arrow、Down Arrow 和 Left Arrow。 |
兼容的输入
| 复用的输入 | 兼容的 Mapped Control 选项 |
|---|---|
| 摇杆对象;Joystick Controlled;Joystick Input;方向摇杆行为 | Left Stick、Right Stick、D-pad、WASD、Arrow Keys、Custom Movement Keys、Mouse Movement。 |
| 按钮对象;Jump with Button;Shoot with Button;对象上的 Started Touching、While Touching 或 Stopped Touching | 控制器面板按钮、肩键、扳机键、摇杆按键、Menu 或 Options;单个键盘按键;鼠标按键;单个滚动方向。 |
| 使用一个具体按键的 Keyboard Event | 相同的按钮替代选项。现有的按下、按住或松开事件仍会生效。 |
| 使用 On Left Click、On Right Click 或某个特定 On Scroll 方向的 Mouse Event | 相同的按钮替代选项。滚动方向会提供一个短暂脉冲。 |
| 使用 On Move 的 Mouse Event | 摇杆对应的方向控制选项。 |
鼠标按键选项包括 Left Mouse Button、Right Mouse Button、Middle Mouse Button、Mouse Back Button 和 Mouse Forward Button。滚轮选项包括 Scroll Up、Scroll Down、Scroll Left 和 Scroll Right。设备必须支持你选择的控制项。
Mouse Movement 提供相对运动,并会在停止移动时回到中立状态。现有摇杆阈值仍会生效。设置该阈值时,请测试较小幅度的鼠标移动。
Any 按键事件和 On Sequence 不会提供单个可映射的按键。鼠标连接事件以及 Any 类型的 On Scroll 不会提供单个可映射的鼠标操作。请先选择一个具体且受支持的输入。
映射后的按钮可以驱动对象现有的按下、按住和松开行为。触摸坐标会使用对象中心点。滑动、手指路径和拖动距离需要各自的移动逻辑。对于这些情况,请在自定义行为树中添加 Controller Event,并将它连接到适合游戏的操作。
添加跳跃或自定义按钮操作
对于 Jump with Button,点按 + Add Input,选择 Controller,然后将它的 Input 拖入该行。选择 Bottom Button (A / ×),并将名称设为 Jump。原有的跳跃次数、墙跳设置、力度和动画仍会生效。
对于自定义触控按钮,请拖动 Started Touching、While Touching 或 Stopped Touching 中的 Input。这些行为指向同一个已选对象的输入。映射该对象后,现有的按下、按住和松开操作就可以响应替代按钮。
多个按钮来源可以同时处于按住状态。松开其中一个来源后,只要另一个来源仍处于按住状态,该操作就会继续保持按下。
执行和输出
Map Control Inputs 会在启动时注册它的各行。如果为它连接了输入白色执行连线,则会在该连线触发时注册。其底部的白色事件连接会在注册完成后运行一次。
此后,使用映射控制项时,原有输入行为会照常产生其事件和值。你无需每帧运行 Map Control Inputs。禁用它会移除其映射。游戏暂停时,以及为重新绑定而捕获输入时,都不会触发映射后的游戏操作。
| 输出 | 类型 | 含义 |
|---|---|---|
mappingCount | 数字(整数) | 此次执行所注册的已配置行数。此计数不能确认设备已连接,也不能确认每一行都具有可用输入。 |
玩家与 Controls 叠加层
玩家编号用于标识控制器分配。第一个可用控制器会自动分配给 Player 1。你可以使用 Assign Controller 或 Controls 叠加层,选择每位玩家对应的已连接控制器。键盘和鼠标是共享的物理设备,因此请在项目中设置它们在多人游戏中的用途。
编辑器会为此设置创建一个可编辑的 Controls 叠加层。它包含玩家选择器、已连接控制器分配、Controller/Keyboard/Mouse 选项卡,以及所选设备的按键绑定列表。控制器示意图会高亮显示所选控制项。未使用的行和不必要的页面控件会保持隐藏。你可以通过 Load Overlay 从自己的菜单打开它。如果 Controls 已被用作场景名称,生成的叠加层会使用带编号的名称。
该叠加层可以在每行所属的设备类型中更改兼容控制项。Rebind Input 可在你自己的界面中提供相同的操作。已保存的选择属于项目、玩家和按键绑定。控制器替代项和键盘替代项仍是分开的行。
请先通过平台支持的方式连接或配对硬件。该叠加层用于从已连接的设备中进行选择,不提供蓝牙配对功能。
检查设置
- 角色完全不动: 检查 Input 是否指向摇杆、映射是否已启动,以及控制器是否已分配给所选 Player。
- 下拉菜单中没有 Left Stick: 将 Device 设为 Controller,并选择摇杆或移动类 Input。按钮输入只会提供按钮控制项。
- 自定义滑动不像触控那样工作: 使用 Controller Event 为该操作构建明确的控制器版本。映射按钮只会提供按钮状态。
- 第二位玩家控制了第一个角色: 检查该行的 Input 对象和 Player 分配。
为操作添加振动反馈
在需要产生反馈的游戏事件或操作之后添加 Vibrate。保留连接到该操作的现有白色执行连线,然后将操作连接到 Vibrate。
将 Vibrate 设为 Controller,并选择与 Map 相同的 Player。受支持的实体控制器或已配对的 iPhone 会收到振动脉冲。短促的按钮反馈可以从 Intensity 70% 和 Duration 150 ms 开始尝试。
映射后的触控、键盘或鼠标替代方式都可以触发同一个游戏操作。振动会使用所选目标和玩家。它不需要映射行,也不会在手机布局中添加按钮。

