Questions tagged «input»

输入是通过玩家互动(通过鼠标,键盘,游戏手柄等)提供给游戏的数据。

4
玩家对平板电脑感到疲劳吗?
我正在考虑为平板电脑制作游戏。来自PC /控制台的背景,我敏锐地意识到用户界面的巨大差异,因此我需要考虑目标平台来进行设计。 我担心的一方面是玩家的疲劳感。PC和控制台上使用的输入设备(键盘和游戏控制器)针对扩展播放进行了优化,并具有成熟的人体工程学设计。大多数经验丰富的玩家都可以轻松使用它们一个小时,只需数以千计的按键操作,而不会感到疲劳。设计用户体验时,其后果从设计师可以依靠这个级别的大小/长度,步骤需要执行命令,游戏的节奏等等。 触摸屏平板电脑呢?玩家会更快疲劳吗,还是无法在单位时间内执行多次轻击/刷卡操作?如果是这样,是否有任何资源或有关此问题的指南?

6
如何在XNA中处理鼠标输入?
我正在XNA中开发纸牌游戏。 OnClickXNA中是否有对象事件? 我试图让玩家点击卡时移动它们。在这个项目中,有一个Sprite类可以绘制卡片,但是我有点不知所措,因为我不知道如何使用OnClick事件或类似的东西。
13 xna  c#  input  mouse 

5
键盘输入系统处理
注意:由于API限制(SFML),我必须轮询而不是回调。对于缺少“体面”的头衔,我也表示歉意。 我想我有两个问题。如何注册我收到的输入,以及如何处理。 处理输入 我在说的是您已经注册了例如已经按下“ A”键的事实,以及如何从那里开始操作。 我看过整个键盘的排列,例如: bool keyboard[256]; //And each input loop check the state of every key on the keyboard 但这似乎效率很低。例如,您不仅将键“ A”耦合到“玩家向左移动”,而且还会每秒检查30-60次每个键。 然后,我尝试了另一个仅查找所需密钥的系统。 std::map< unsigned char, Key> keyMap; //Key stores the keycode, and whether it's been pressed. Then, I declare a load of const unsigned char called 'Quit' or …

4
为什么将前向下鼠标方向通常称为“反转”?
如果您看一下允许您使用鼠标来控制相机的3D游戏(最著名的是第一人称和第三人称射击游戏),通常会发现两个具体细节: 默认情况下,向前推动鼠标会使相机向上看,向后拉则向下看。 反转此选项(前进=向下)称为“反转Y轴”或类似的选项。 我从不了解这一点,而且对我来说似乎总是倒退,以至于我在使用默认设置的任何游戏中都迷失了方向。从直观上看,显然鼠标(或更像是拇指棒,看起来像是坐在脖子上的头)正在为透视角色的头部建模。向左移动,您向左看。向右移动,您看起来正确。往前推,头往前推,你往下看...对吗? 实际上,这种方向是许多早期3D游戏(例如飞行模拟器,MechWarrior 2等)中的默认方向。但是在某些时候,它发生了变化,人们开始将直观方向称为“反转”并默认禁用它。 颠倒默认相机控制方向后,是否有任何历史原因?也许有任何文章介绍更改背后的原理,或者研究表明为什么进行此更改是理想的?

4
SDL中的陷阱鼠标
如何将用户的鼠标捕获到我的游戏中?这不是一个全屏游戏,但我想要它,以便用户不能将鼠标拖到屏幕外。 我是否需要检查鼠标和SDL_WarpCursor的坐标以使其在窗口内显示(手动),还是有自动方法? 谢谢。
12 sdl  input  mouse 


2
正确的方法来抽象XBox控制器
我有一个XBox360控制器,我想将其用作应用程序的输入。 我无法解决的是通过接口公开此内容的最佳实践方法。 在幕后,处理控制器的类依赖于轮询按钮状态。 我最初尝试了一些链接: Event ButtonPressed() as ButtonEnum 这里ButtonEnum是ButtonRed,ButtonStart等... 这是有一点限制的,因为它仅支持按钮按下,不支持按住/模式(按两次,等等)。 下一个想法是简单地向应用程序公开按钮状态,例如 Property RedPressed as Boolean Property StartPressed as Boolean Property Thumb1XAxis as Double 这是非常灵活的方法,但实际上它会迫使应用程序投入过多工作,并且需要应用程序进行轮询-如果可能的话,我更喜欢事件驱动。 我考虑添加多个事件,例如: Event ButtonPressed(Button as ButtonEnum) Event ButtonPressedTwice(Button as ButtonEnum) Event ButtonHeldStart(Button as ButtonEnum) Event ButtonHeldEnd(Button as ButtonEnum) 但这似乎有些笨拙,并且在“绑定按钮”屏幕上确实很痛苦。 有人可以给我指出处理控制器输入的“正确”方法。 注意:我在实现接口的类中使用SlimDX。这使我可以非常轻松地读取状态。任何可以解决我的问题的替代方案也将受到赞赏

2
在GUI中,应该在按下或释放按钮时处理输入吗?
在我们游戏的菜单系统(选择级别,选项等)中,玩家按下游戏板上的a按钮进入下一个屏幕。我对菜单系统进行了编码,以等待按钮被释放后再执行任何操作(即显示下一个屏幕)。最近的一些游戏测试反馈建议我们采取相反的方式:按下按钮后立即采取措施。我很好奇,这种处理的标准方式是什么,它甚至会有所作为吗?
12 input  gui 


3
基于组件的设计中的输入处理
我知道这个问题已经问过几次了,但是我仍然不确定如何在基于组件的引擎中实现输入处理。 我使用的基于组件的设计基于T = Machine的博客系列以及Artemis(其中实体只是id)。 实现输入处理时,我有三个主要想法: 输入组件将保存其感兴趣的事件。输入系统会将键和鼠标事件转换为游戏事件,并使用输入组件在实体之间循环,如果它们对事件感兴趣,则输入系统将采取适当的措施。该动作将被硬编码到输入系统。 没有输入组件。您可以将具有特定事件的实体注册到输入系统。输入系统然后将消息(具有实体ID和事件类型)发送给其他系统,以便它们可以采取适当的措施。或与第一种情况一样,这些动作将被硬编码到输入系统中。 与第一种方法类似,该组件将包含事件到函数(即std::map<std::function>)的映射,而不是对输入系统的动作进行硬编码,输入将调用该函数。这具有能够将同一事件耦合到不同动作的附加效果。 您会建议上述任何一种方法,还是对我实现灵活的输入处理系统有任何建议?另外,我还不熟悉多线程,但是也欢迎任何使实现线程友好的建议。 注意:我希望实现能够满足的另一个要求是,我能够将相同的输入传递给许多实体,例如,同时移动相机实体和播放器。

2
如何进行延迟的鼠标输入?
我有一个赛车游戏,想法是玩家喝醉了。我希望鼠标有一个延迟的输入,您将鼠标左右移动来转动。 如何在用户提供的输入和汽车转弯量之间设置恒定的延迟? 现在我有这个: h = Mathf.Lerp(h, (((Input.mousePosition.x / Screen.width) * 2) - 1), Time.deltaTime * 2); 发生的情况是转弯被延迟了,但是非常慢,换句话说,如果我非常快地移动鼠标,汽车会非常缓慢地转弯,但是如果我将乘数提高到Time.deltaTime,汽车会转弯更快,但是延迟效果会最小化。 我还能怎么做?
11 unity  c#  input  mouse 

2
XNA / MonoGame的便携式缓冲键盘输入?
作为一个初步的解决方案,我目前在C#/ XNA游戏项目中使用Nuclex框架来缓冲键盘输入。可悲的是,nuclex依赖于SlimDX.Directinput.dll,因此据我所知只能在Windows操作系统下使用。但是,我使用MonoGame定位其他平台(Linux,OSX等),因此我正在寻找一种可移植的方式来集成所有平台上的缓冲键盘输入。有没有?

5
事件驱动系统中的嵌套输入
我正在使用具有事件和委托的基于事件的输入处理系统。一个例子: InputHander.AddEvent(Keys.LeftArrow, player.MoveLeft); //Very simplified code 但是,我开始怀疑如何处理“嵌套”输入。例如,在《半条命2》(或其他任何真正的Source游戏)中,您可以使用拾取物品E。拾取物品后,您不能使用射击Left Mouse,而是扔掉物体。您仍然可以跳下去Space。 (我是说嵌套输入是您按某个键的地方,可以更改的操作。不是菜单。) 这三种情况是: 能够像以前一样做同样的动作(例如跳跃) 无法执行相同的操作(例如射击) 完全执行其他操作(例如在NetHack中,按开门键表示您不移动,但选择打开门的方向) 我最初的想法是在收到输入后才进行更改: Register input 'A' to function 'Activate Secret Cloak Mode' In 'Secret Cloak Mode' function: Unregister input 'Fire' Unregister input 'Sprint' ... Register input 'Uncloak' ... 这会遭受大量的耦合,重复的代码和其他不良的设计标志。 我猜另一个选择是维护某种输入状态系统-也许是寄存器函数的另一个委托将大量的寄存器/注销重构到更干净的位置(在输入系统上具有某种堆栈)或可能是什么数组保留,不保留。 我确定这里有人一定遇到了这个问题。您如何解决的? tl; dr如何处理事件系统中另一个特定输入之后收到的特定输入?


5
处理键盘和鼠标输入(Win API)
在Windows下有多种捕获鼠标或键盘的方法。所以我尝试了其中的一些,但是每个都有优点和缺点。我想问你:使用哪种方法? 我已经尝试过这些: WM_KEYDOWN / WM_KEYUP-主要缺点是,我无法区分ALT,CONTROL或SHIFT之类的左右手键。 GetKeyboardState-这解决了第一种方法的问题,但是有一个新方法。当我得到按下Right-ALT键时,我也得到了Left-Control键已按下。仅当使用本地化的键盘布局(捷克语-CS)时,才会发生此行为。 WM_INPUT(原始输入)-此方法也不区分左手和右手键(如果我还记得的话),并且对于鼠标移动,有时会生成鼠标位置的增量值为零的消息。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.