游戏手柄

448次阅读
没有评论

共计 3199 个字符,预计需要花费 8 分钟才能阅读完成。

游戏手柄

游戏手柄对象允许你检测来自连接的主机控制器、PC 游戏手柄或操纵杆的输入。虽然许多设备应该能够与游戏手柄对象一起工作,但它是为 XBox 360 控制器或具有相同按钮 / 摇杆布局的类似设计的控制器而设计并运行得最好的。

不幸的是,特定的设备是否支持取决于很多因素,包括操作系统、可用驱动程序和浏览器的支持。这使得很难提前知道特定设备是否可以工作。XBox 360 控制器在 Windows 系统上使用谷歌浏览器时可以即插即用。PlayStation 控制器通常需要安装第三方驱动程序才能工作,因为它不是官方支持的。

一些移动设备也支持游戏手柄输入,无论是通过特殊硬件附件,还是通过有线或无线连接游戏手柄。

为了防止网站通过可用的控制器跟踪您,大多数支持游戏手柄输入的浏览器会报告没有连接控制器,直到其中一个设备上的按钮被按下。

键位映射

不同的控制器有不同的按钮布局,或者按钮有不同的名称。例如,PlayStation 3 控制器使用方形、圆形、三角形和 X 按钮,而 XBox 360 控制器使用 A、B、X 和 Y(注意每个控制器中的 X 出现的位置也不同)。为了保持一致性,游戏手柄对象仅引用 XBox 360 布局。

游戏手柄对象还会尝试将其他控制器的键映射到内部 XBox 360 布局,以确保相同的按钮始终触发相同的事件。然而,为存在的每一个设备设置这是不切实际的,因此一些设备按钮可能会在游戏手柄对象中触发不同的按键事件。这就是为什么建议专注于 XBox 控制器的原因。如果你对使用游戏手柄输入感兴趣,请确保在你能获得的尽可能广泛的设备范围内进行测试。

控制行为与游戏手柄

要使用游戏手柄输入控制行为,请使用模拟控制操作。下面展示了一个用左摇杆和 A 跳跃来控制平台行为的示例。
游戏手柄

控制行为的手柄事件

有关更多信息,请参见行为参考中的自定义控件部分。

多个游戏手柄

可以在单台计算机上连接多个游戏手柄设备。为了区分它们,游戏手柄对象中的大多数操作、条件和表达式还接受一个游戏手柄参数。这是一个基于零的控制器索引。例如,0 标识第一个控制器,1 标识第二个,依此类推。这允许你制作多人游戏手柄控制的游戏。

游戏手柄属性

模拟盲区

带有模拟摇杆的设备对输入非常敏感。这允许在游戏中精细控制,但也意味着处于静止位置的摇杆仍然可以注册相当大量的移动。如果这不被忽略,摇杆控制的玩家可以开始在玩家不触摸控制装置的情况下四处移动。为了解决这个问题,所有接近静止位置的值都被忽略。摇杆移动范围在每个轴上的 -100 到 100 之间,如果距离中心的距离低于模拟死区值,它将返回 0。例如,默认值是 25,所以半径 25 内的值仍将计为零。这是推荐的值,以确保即使是老化的控制器和高度不稳定的输入也不会导致意外的玩家移动。

游戏手柄条件

是否有游戏手柄

如果有游戏手柄连接并激活,则为 True。为了防止网站根据可用的游戏手柄跟踪您,大多数支持游戏手柄输入的浏览器会报告没有连接控制器,直到其中一个设备上的按钮被按下。

当游戏手柄连接时

当游戏手柄设备连接到计算机时触发。为了防止网站根据可用的游戏手柄跟踪您,大多数支持游戏手柄输入的浏览器会报告没有连接控制器,直到其中一个设备上的按钮被按下,此时也会运行“当游戏手柄连接时”。

在此触发器中,GamepadIndex 表达式给出连接的游戏手柄的索引。

当游戏手柄断开连接时

当游戏手柄设备从计算机断开连接时触发,例如通过拔出其电缆。

在此触发器中,GamepadIndex 表达式给出断开连接的游戏手柄的索引。

比较轴

比较特定游戏手柄上的模拟摇杆的位置。在模拟死区内的值返回为 0。轴值范围从 -100 到 100。

按钮是否按下

如果特定游戏手柄上的给定按钮当前按下,则为 True。按钮总是按照 XBox 360 控制器布局来引用,并且按钮受到如键位映射下所述的映射的影响。

按钮索引是否按下

如果特定游戏手柄上给定按钮按其数字索引当前按下,则为 True。索引仍受到如键位映射下所述的映射的影响。

任何按钮按下时

当特定游戏手柄上的任何按钮被按下时触发。ButtonIndex 表达式设置为按钮的索引。特殊值 - 1 也可以用于游戏手柄,在这种情况下,当任何游戏手柄上的任何按钮被按下时,触发器都会触发,并且 GamepadIndex 表达式也将设置为按下按钮的游戏手柄的索引。

任何按钮释放时

当特定游戏手柄上的任何按钮被释放时触发。ButtonIndex 表达式设置为按钮的索引。特殊值 - 1 也可以用于游戏手柄,在这种情况下,当任何游戏手柄上的任何按钮被释放时,触发器都会触发,并且 GamepadIndex 表达式也将设置为释放按钮的游戏手柄的索引。

按钮索引按下时

当特定游戏手柄上给定按钮按其数字索引被按下时触发。索引仍受到如键位映射下所述的映射的影响。

按钮索引释放时

当特定游戏手柄上给定按钮按其数字索引被释放时触发。索引仍受到如键位映射下所述的映射的影响。

按钮按下时

当特定游戏手柄上的给定按钮被按下时触发。按钮总是按照 XBox 360 控制器布局来引用,并且按钮受到如键位映射下所述的映射的影响。

按钮释放时

当特定游戏手柄上的给定按钮被释放时触发。按钮总是按照 XBox 360 控制器布局来引用,并且按钮受到如键位映射下所述的映射的影响。

游戏手柄操作

震动

初始化特定游戏手柄的震动(也称为“隆隆声”)一段时间,以毫秒为单位。对于支持两个震动电机的游戏手柄(有时称为“双震”),每个电机的震动幅度可以独立设置,允许产生不同类型的隆隆声效果。如果在此操作使用时已经激活了震动,它将被此操作替换。

重置震动

停止由特定游戏手柄的震动动作启动的任何活动震动。震动将立即取消,因此它不会达到启动时的持续时间。如果没有活动的震动,这将没有效果。

游戏手柄表达式

Axis(Gamepad, Index)
检索特定游戏手柄上模拟摇杆的当前位置。索引指定左模拟 X 和 Y 或右模拟 X 和 Y 轴,受键映射约束。轴的范围从 -100 到 100。在模拟死区内的轴值返回为 0。

Button(Gamepad, Index)
检索特定游戏手柄上按钮的当前按下值。索引指定下拉列表中按钮的基于零的索引,例如 0 返回 A 按钮的值。返回的值取决于按钮的功能:如果按钮是压力敏感的,它可以返回 0 到 100 之间的任何值,具体取决于压力;否则它返回 0 表示未按下,100 表示已按下。不是压力敏感的按钮使用 Is button down 条件更容易检测。

GamepadCount
返回当前连接并激活的游戏手柄设备的数量。为了防止网站根据可用的游戏手柄跟踪您,大多数支持游戏手柄输入的浏览器将在按下设备上的按钮之前报告没有控制器连接。

GamepadID(Gamepad)
一个字符串,旨在代表特定游戏手柄的设备制造商和型号,例如“XBox 360 控制器”。然而,实际上这取决于使用的系统和浏览器而有所不同。

GamepadIndex
在 On gamepad connected/disconnected 触发器中,或当使用 On any button pressed/released 与 - 1 的游戏手柄时,此表达式指示相应游戏手柄的索引。

ButtonIndex
返回特定游戏手柄上最后按下的按钮的数字索引。这对于使用 On any button pressed 和 On any button released 触发器来设置自定义控件很有用。

RawAxis(Gamepad, Index)
检索特定游戏手柄和轴索引的原始轴输入。这返回的值没有键映射,应用模拟死区,或将返回的值乘以 100。轴值范围从 - 1 到 1。

RawAxisCount(Gamepad)
返回特定游戏手柄的原始输入中的轴数。这返回的值没有键映射。

RawButton(Gamepad, Index)
检索特定游戏手柄和按钮索引的原始按钮输入。这返回的值没有键映射。按钮值范围从 0 到 1(压力敏感按钮可以返回中间值)。

RawButtonCount(Gamepad)
返回特定游戏手柄的原始输入中的按钮数。这返回的值没有键映射。

正文完
 0
评论(没有评论)