Questions tagged «input»

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

5
好的2D Platformer物理[关闭]
我为Box2D的2D平台游戏者设置了基本的角色控制器,并且我开始对其进行调整以使其感觉良好。物理引擎有很多旋钮需要调整,我不清楚,我是第一次使用物理引擎编写,我应该使用哪种。跳跃应该施加力几次tick吗?一时冲动?直接设定速度?如何在不消除化身的所有摩擦的情况下阻止化身粘在墙上(或者我消除了所有的摩擦,但仅限于空中)?我应该将角色塑造成胶囊吗?有圆角的盒子吗?一个有两个轮子的盒子?只是一个大轮子?我觉得以前一定有人做过! 在网络上,似乎只有很少的资源不是“婴儿的第一物理学”,这一切都切断了我希望有人已经解决了这些问题的地方。用于平台游戏的物理引擎的大多数示例都具有浮动感控件,空中跳跃或当临时穿透力过高时容易利用的行为等。 我的意思的一些例子: 轻按一下跳会跳很短距离;长按会跳得更高。 高速停止或反转方向时打滑短。 稳定地站在斜坡上(但在避开时可能会滑下)。 使用模拟控制器时的模拟速度。 所有其他将优秀平台游戏者与劣质平台游戏者区分开的事物。 我敢说,稳定的移动平台吗? 我并不是真正在寻找“嘿,这样做”。显然,正确的做法取决于我在游戏中想要的东西。但是我希望某个地方的人经历了各种可能性,并说“技术A的X很好,技术B的Y很好,但是不适用于C”,或者除了“如果(key = = space)character.impulse(0,1)“
76 box2d  physics  input 

2
如何使角色跳跃?
我目前正在使用Direct X 9.0在C#中制作游戏。游戏重制为《大金刚》。我几乎完成了所有工作,但是我对Mario跳高的物理学存在疑问。我为Y和X坐标声明了变量。 我想知道是否有一个简单的方法来做到这一点。我在上下搜索了一个答案,但是找到的答案不相关/或使用其他编程语言(例如XNA)。 我目前设置了一个bool变量来检查是否按下了W,这将触发任何代码使他跳转。我一直在诸如此类的混乱。 if (jump == true) { Playerypos -= vel; Playerxpos += vel; } 哪个效果不好。我一直在寻找一个答案,但现在我很绝望,如果有人可以向我指出简单解决方案的正确方向。那很好啊。非常感谢您的任何回应。
44 physics  input  jumping 

6
我可以(安全地)认为玩我的游戏的人有鼠标中键吗?
标题基本概括了所有内容。 我目前正在写桌面游戏,休闲玩家可能不会玩。因此,我的期望是,几乎每个用户都将很可能已经拥有带有滚轮+按钮的鼠标。真的吗? 这个问题是针对“游戏玩家”的-我不在乎祖母的笔记本电脑没有该按钮。 (当然,我知道我应该考虑一个允许更改输入设置以使游戏可玩的系统-即使没有第三个鼠标键也是如此。)

3
使用100%CPU的游戏正常吗?
我刚刚在游戏引擎中实现了多线程输入处理,其中轮询操作系统以从中收集输入信息并对其打上时间戳的代码位于单独的线程中,而主线程中的每一帧我都将收集到的输入吃掉逻辑游戏时间。一切正常,但是此设置使用了100%的CPU。我有两个核心,并且在运行我的游戏时会达到100%。 我已经与其他游戏进行了核对,以查看它们是否也这样做。例如,Skyrim和Doom 3看起来不错,CPU刚好超过60%。 使用多线程输入消耗100%CPU的游戏是否可以接受?如果没有,这种游戏通过输入线程降低cpu使用率的一些技巧是什么?

3
我以及如何将输入和游戏对象的关注点分开?
在每个游戏中,开发人员都必须以某种方式处理输入,可能是简单的键盘和鼠标事件,触摸事件或加速度计输入。该输入直接间接影响游戏中的对象。有时相同的输入会影响不同的对象。现在,我一直在考虑如何对此建模。我的看法有两种不同的方法。 让游戏对象自己处理它,订阅事件并调用它自己的方法。这具有使游戏对象自己决定哪些输入导致哪个动作的优点。缺点似乎是输入代码与“核心”游戏对象代码混在一起。而且,游戏对象不知道游戏其余部分的状态,并且有时可能不应对输入事件起作用。这似乎不正确。 让一般的输入控制器负责所有输入,并决定谁来处理什么事件。这似乎可以更好地分离关注点,但是紧密地将输入控制器类与游戏对象耦合在一起。它需要以某种方式知道谁想要接收哪个事件和哪个状态。这似乎也不正确。 您正在使用什么策略来解决这个问题?

3
轮询与事件驱动的输入
我正在开发使用轮询输入法的游戏。但是,既然我正在更深入地研究游戏菜单和其他UI组件,我发现我可能想拥有事件驱动的输入。甚至可以同时使用事件驱动的UI和轮询的“世界”输入。我对最好的方式是很好奇。 我将轮询定义为:每个更新循环都检查按下了哪些键,鼠标在哪里,按下了按钮,然后遍历它们并根据收集到的信息执行操作。 我将事件驱动定义为:基于中断的事件,当事件发生并触发中断并基于该事件运行代码块时。 您是否认为最好进行所有事件驱动,全部轮询,或者两者都可以接受?如果您有两者的优缺点,请列出。谢谢。 编辑 该游戏基于Java / OpenGL,因此将发布到Windows / Mac / Linux。将其扩展到移动设备的可能性很小。游戏是RTS风格的第三人称3D。 编辑2 我对实现此方法的方式仍然不完全满意,但是我要转向的是在UI中捕获事件,如果事件未由我的任何UI组件处理,我会将事件传递给用于选择的“世界”。就像是: @Override private boolean handleEvent(Event event) { if(hud.handleEvent(event)) { return true; } return WORLD.handleEvent(event); } 这样,我不会从用户界面中泄漏点击以选择按钮后面的对象,而不是其他。 目前,我的摄像头控件仍然基于轮询,并且目前似乎可以正常使用,但稍后可能会进行更新。 我感谢所有答案,对不起,我只能选择其中一个!
19 java  input  events  polling 

1
如何在Unity中支持Surface笔?
我们的游戏可以很好地与触摸或鼠标配合使用,但是Surface笔似乎根本没有注册为定点设备。我们如何在原生版本的Unity中支持笔? 这个问题Unity Answers网站上的表明我们可以将其构建为UWP应用,但这意味着将自己限制为.NET框架的一个非常有限的子集(特别是,我们失去了很多序列化库)。
18 unity  input  surface 

2
大型游戏中的输入管理技术
是否有用于管理大型游戏中输入的标准技术。当前,在我的项目中,所有输入处理都在游戏循环中完成,如下所示: while(SDL_PollEvent(&event)){ switch(event.type){ case SDL_QUIT: exit = 1; break; case SDL_KEYDOWN: switch(event.key.keysym.sym){ case SDLK_c: //do stuff break; } break; case SDL_MOUSEBUTTONDOWN: switch(event.button.button){ case SDL_BUTTON_MIDDLE: //do stuff break; } } break; } (我正在使用SDL,但我希望主要实践也适用于库和框架)。对于大型项目,这似乎不是最佳解决方案。我可能有几个对象都想知道用户所按的内容,因此使这些对象处理输入更为有意义。但是,它们不能全部处理输入,因为一个事件发生后,它将被推入事件缓冲区,因此另一个对象将不会接收该输入。最常用的方法是什么?
16 c++  sdl  input  standards 

2
基于组件的实体系统中的游戏状态和输入处理
我的问题是: 如何在我的实体系统中处理游戏状态,而又不保留周围的游戏状态对象堆栈? 因此,我的实体系统的设计意味着,例如,当某个实体需要注册输入事件时,输入组件将调用输入系统,并说“为此输入注册此实体”。一切都很好,但是,如果您将游戏状态的概念(例如暂停屏幕)加入其中,那么确定实体是否处于当前状态并应接收输入就变得很困难。 我可以扩充输入组件/系统,使其说“在处于这些游戏状态时为此输入注册此实体”,但这要求每个实体都知道将在其中使用哪个状态,这可能并不明显。同样,在每个注册的输入(以及其他使用回调的系统)周围保留游戏状态列表听起来并不太有效。 我有另一个想法,因为将有一个代表游戏状态的实体,将其标记为已禁用,然后在生成输入事件时检查该实体不是已禁用游戏状态实体的后代。为每个回调计算父级似乎很昂贵。 另一个想法是让所有系统针对当前状态存储其数据密钥,这样,在生成输入时,目标实体甚至都不是候选对象。但是,这确实损害了允许处于不同状态的实体之间进行通信的能力(对于暂停屏幕而言,这并不是什么大问题,但请考虑Oblivion / Skyrim中的锁定选择)。 我唯一的另一个想法是让所有组件处理状态更改事件并与相关系统进行通信以禁用其已注册的任何内容,并在切换回此状态时重新启用它。 第二个(将对象标记为已禁用)和第四个(使每个组件都处理状态更改)似乎是我的最佳想法,但是没有一个想法特别出色。 还有其他人对此有其他想法吗? 编辑当我谈论输入专门在这个问题上,它可能意味着能够发送消息/事件的实体,如碰撞,定时器事件等的任何系统...

5
对于触摸设备上的2D平台器,合适的输入方法是什么?
我正在创建一个2D平台游戏,例如Super Meat Boy,在该游戏中,主角的动作精度至关重要。我正在使用libgdx。PC上的键盘控件工作正常,但是在加速度计处理方面,要精确处理字符确实非常困难。随着交通安全路线的拥挤,这种情况会逐步恶化。我曾考虑实现一个屏幕上的模拟球来处理输入,但在互联网上却读到了很多不良后果。 用于触摸设备上的平台游戏的直观但精确的输入方法是什么?
16 2d  input  touch  multitouch 

7
如何在文字冒险游戏中解析用户输入?
解析文字冒险中的用户命令的范围很广,从Adventure的简单“向北”到hhgttg中一些令人难以置信的聪明命令。 我似乎记得80年代在计算机杂志上阅读过不错的操作指南,但是现在,除了简短的Wikipedia参考文献之外,我在网上几乎找不到任何内容。 你会怎么做? 更新:我在Ludum Dare条目中采用了最简单的方法。

1
在Mac OSX上使用PS3控制器进行输入
我设法找到一个USB驱动程序以连接到OSX中的PS3控制器,并且如此处所述,可以通过蓝牙连接到该控制器。 我已验证输入是否可以通过Snes9x正常工作。 无论如何,这只是我实际问题的背景。在Mac上,是否可以通过C ++访问PS3 HID?对于使用XCode在Mac上进行C ++开发的人来说,我还比较陌生,而对于寻找可能要使用的库,互联网一直令人失望。 是否有人对如何访问代码中的控制器按钮/轴状态有任何想法,以便可以将其传输到输入映射?



2
停止播放器时,如何阻止播放器因本地输入预测而漂移?
我正在开发2D服务器-客户端多人游戏引擎(您可以在此处尝试)。它使用WebRTC DataChannel。(连接是对等的,但主机对等方仍充当服务器。) 除了连接性之外,最大的问题是本地输入预测。我们照常做:在按键时,玩家立即移动,告诉主机按下了哪些键,从主机接收回数据并将其与历史位置进行比较。如果存在差异,则随时间校正位置。即使ping高,这在低丢包率或PDV情况下也能很好地工作。 如果存在损耗或PDV,则偏差可能会更大。我认为这是因为,如果第一个指示输入变化的数据包被延迟或丢弃,主机将稍后发现,并在其本地输入条件显示之前开始更改该玩家。 如果玩家正在移动,我们会提高校正的幅度,因为它不太明显。这似乎弥补了开始移动和移动时的空白。但是,如果它们突然停止,则更明显。然后,如果PDV或丢失表示主机认为主机稍后停止,则主机超调,发送回数据,表示主机距离主机稍远,而校正会使播放器稍微偏离一点。在不稳定的连接中,玩家通常在停下来后通常会漂移。 我没有在其他游戏中注意到这一点。如何缓解这种情况?

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.