TopDown Engine中文文档 (十六输入)

十五.输入

1.介绍 

 输入是每一个游戏的核心。TopDown Engine也不例外。它目前支持移动控制(iOS、Android……)、键盘、手柄(为Windowsxboxpad设置,但可以随意重新绑定其他控制器的键)和鼠标。

2.默认输入

 默认情况下,创建的键盘布局是为了支持4个同步玩家。现在,这对于单人游戏来说可能不太舒服,请随意重新映射按钮,以满足您的需要(见以下部分)。在任何情况下,以下是玩家1的默认布局(单击图像以展开)(查看其他播放器绑定的输入设置):

Jekyll

 

 3.输入设置-如何更改键绑定?

 

Jekyll

 

 对于键盘和手柄(以及鼠标),键绑定是像在任何Unity项目中一样,通过本地输入设置来定义的。您可以通过顶部菜单“Edit > Project Settings > Input”访问这些选项。这应该会打开一个相当大的“轴”列表。如果你以前从未见过这个面板,也许可以先看看官方文档。
现在这个列表已经很长了。这个列表已经被填满以支持4个玩家(如果你愿意,你可以添加更多),并提出了一个关键的配置。请随意编辑这些,以重新绑定键到您的偏好。

 

 4.Input Manager and GUI

 要在屏幕上移动你的角色,你通常会使用输入,无论是通过触摸屏幕还是按机械键。要处理输入检测并将其传递给您的角色,TopDown引擎使用输入管理器。大多数级别的TopDown引擎都有一个UI Camera。这个UI Camera预制体还嵌套了一堆移动控制件,用于在手机上播放时控制播放器。因此,为了使绑定更容易,您将找到位于UICamera预制件的根节点的InputManager。如果你愿意,你可以决定把它放在自己的游戏对象上。

InputManager是一个相当大的类。如果你看一看它,你会发现它实际上并不太复杂,只是非常详细。它有很多方法,你可以绑定到你的移动控件,并为每个注册的按钮管理一个小的状态机。

 从它的面板中,您可以指定PlayerID,无论您是否想使用移动检测或强制移动控制。您还可以决定您是更喜欢虚拟箭头/dpad还是虚拟操纵杆。最后可以开启或关闭平滑移动,以及水平和垂直的阈值。

5.Player ID

 

Jekyll

 这里有一件真正重要的理解是玩家的概念。引擎能够将来自InputManager 的输入发送到场景中的可玩角色(具有类型设置为“Player”的角色组件的对象)。每个InputManager 都有一个PlayerID属性,它将将其信息发送给与PlayerID属性匹配的所有字符。所以有几种方法可以这样工作:

1.最常见的方法是简单让引擎来处理这个问题。添加到您的场景的InputManager ,将其播放器ID设置为“Player1”。然后在LevelManager中,当你添加你的角色时,选中“Auto attribute player IDs”复选框,它将自动给可玩的角色“Player1”ID。如果你在多人游戏关卡,使用“Player2”,“Player3”和“Player4”。当然,你可以添加你自己的内容,但这些都是默认的。

2.您也可以在预制件上设置PlayerID。例如,你可以有一个狗角色,它的角色是“欢乐狗”。如果您向场景添加了一个InputManager ,并希望其针对该狗的角色,请将其自己的PlayerID参数设置为“欢乐的狗”。按下播放,你应该能够控制你的狗的角色。如果出于某种原因,您不想使用Level Manager,并且希望在场景中立即移动一个预制件,那么该方法将非常好。

我在调整角色时经常使用第二种方法。假设我想改变我的角色的跳跃行为。我只需要复制我的角色的预制件,把它放在场景中,将其PlayerID设置为player1。然后在LevelManager中,我将原始的预制件作为Player预制件。我按播放,现在用相同的输入控制两个角色。然后,我可以更改其中一个版本上的跳转设置,并快速进行游戏测试,看看我的更改是否提高了游戏玩法。

6.平台检测如何工作

从 InputManager的面板中,您可以打开或关闭自动移动检测。
如果你展开UICamera预制件,你会看到它包含了很多的东西,特别是箭头,操纵杆和按钮画布组。默认情况下,它们是禁用的,以允许更简单的级别版本,但如果您愿意,您可以打开它们,或者调整它们。然后将它们绑定到GUIManger组件(以及其他内容)。移动检测的工作方式非常简单:如果你的目标是移动平台(iOS或Android),那么在你按下游戏时,它会显示控件。如果你的目标是另一个平台,它将隐藏并禁用它们。

7.Virtual Arrows, Joysticks and Buttons

Jekyll

 该资产配备了一个功能齐全的箭头板,一个操纵杆和一些按钮,但当然你可以重新混合所有这些,添加按钮,添加操纵杆,等等。来匹配你自己的游戏玩法。您将在MMControlsTestScene演示场景中找到引擎中所有现成的移动输入的演示。

Mobile arrows非常简单,您只需要Rect+CanvasGroup 对象上的MMTouchAxis组件。然后在面板中,需要设置轴值(通常-1左/下或1右/上)。然后,您需要将其绑定到您的InputManager,只需在轴向压缩事件上。为此,只需将InputManager(在大多数情况下是场景中的UICamera预制件)拖到“runtime only”下面的小框中,然后选择适当的方法(设置垂直移动、设置水平移动或其辅助对应方法)。

Mobile joysticks甚至更容易设置。只需将MMTouchJoystick 组件添加到Rect+CanvasGroup对象,定义已启用哪个轴(例如可能只需要水平杆)、最大范围(旋钮可以从其底部移动多远),然后将input manager绑定到它。请注意,您还需要指定一个目标相机(通常是您的UICamera)。

Repositionable joysticks 与普通的操纵杆类似,当你举起拇指并再放回屏幕上时,这些操纵杆会重新放在一个更大的区域上

Buttons  以同样的方式工作,但对于他们,你可以指定三个不同的事件:按下按钮(第一次按下时),按下按钮(只要继续按下每一帧),以及打开按钮(当它被释放时)。这将允许您在您的角色能力(例如)在按钮发布时调用某些方法。如果没有使用所有事件,就不必绑定所有事件。

 Swipe zones 让你把拇指拖动到它们的表面,并触发滑动事件,包括角度、方向、长度等。

 

8. 自定义移动输入

 使用上面的类,您应该能够以任何您想要的方式自定义移动控件。例如,如果您想在Loft3D演示场景中添加第二个操纵杆,并让它控制可以在该场景中被选择的猎枪,您将通过以下简单的步骤:

1.在项目视图中选择“ShotgunWithAmmo ”,将其目标控制设置为“ PrimaryThenSecondaryMovement”
2.选择您的UICamera,将InputForcedMode 设置为Mobile (这样,您就可以在编辑器中进行测试)
3.复制UICamera画布下的Joystick 节点,稍微向右移动一点
4.在其操纵手柄旋钮上的MMTouchJoystick 组件上,更改绑定到InputManager设置SecondaryMovement
5.你已经完成了,按下播放,玩得开心吧!

9.禁止输入

 如果希望禁用输入,主要可以通过两种方式实现:
1.在InputManager ,通过将“InputDetectionActive ”设置为false(通过脚本或通过其检查器)。这将防止通过InputManager读取所有输入。
2.在能力上,通过设置AbilityPermitted 为false

10.Nice Touch

 TopDown引擎包括另一个资产:Nice Touch。我创建了NiceTouch来提供一个简单而快速的输入解决方案。它可以处理键盘、手柄、鼠标和触摸输入。还有很多其他的输入解决方案。Nice Touch/mmcontol提供了一个更简单的选择,更快的设置,没有不必要的设置。请随意不要使用这些,用你自己的来代替它们。
您将在MMTools/MMcortols中找到这些脚本。同一文件夹还包括一个测试场景:MMControlsTestScene场景。你会想在游戏中保留这个文件夹。

11.使用Unity的“新”输入系统

 Unity3年前发布了一个新的输入系统,尽管仍然没有完全的记录或稳定,但最近被标记为“验证”。如果尽管使用它有所有风险,您想在生产中使用它,TopDown引擎有两个使用它的示例。您会在TopDownEngine/Common/ScriptsInputSystem下找到它们,当然,它们需要您安装和设置输入系统包。

您会注意到,InputManager 会被InputSystemManagerInputSystemManagerEventsBased所取代,这取决于您所看到的演示(事件版本最适合多人游戏)。在这两种情况下,您都会在相机设备下找到InputSystemManager 。两者都依赖于另一个类,TopDownEngineInputActions,这只是“新”系统的常规自动生成输出。除了该系统的特定API调用和该类的使用之外,它没有什么特定的东西,它的工作原理与普通版本一样。建议您对这个系统有一个很好的理解来选择这个选项,就像这个系统的其他部分一样,它不如经典的选项那么直观。 

在安装了输入系统软件包后,Unity可能会丢失一些引用,而且您可能必须手动设置绑定。这应该只发生在MinimalScene3D_InputSystem_Multiplayer场景中,另一个应该是安全的。如果发生这种情况,这就是您的InputSystemManager_Player1和InputSystemManager_Player2的面板:

Jekyll

 

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值