Articles of input

尽管mouselock – 团结,获取mousemovement

我有lockcursor,所以光标不离开屏幕,但现在我必须旋转一个基于鼠标移动的对象(想想garrys国防部项目旋转),但鼠标光标明显locking在中心,有无论如何得到input从鼠标? public void GetRotated() { Debug.Log(Input.GetAxis("Mouse X").ToString() + ", " + Input.GetAxis("Mouse Y").ToString()); gameObject.transform.localRotation = new Quaternion(Input.GetAxis("Mouse X") * RotationSpeed * Time.deltaTime, Input.GetAxis("Mouse Y") * RotationSpeed * Time.deltaTime, 0, 0); }

我怎样才能在configuration文件中有可读的键名?

给定一个文件映射到控件的键,如下所示: up w down s left a right d jump space run shift crouch ctrl 这些值需要转换成游戏命令和常量。 这些命令不像键盘键那样是一个问题; 一个键盘可以包含超过100个键,所以最后一件事是这样的: unsigned int pressedKey; if (value == "a") { pressedKey = KEY_A; } else if (value == "b") { pressedKey = KEY_B; } else if (value == "c") { pressedKey = KEY_C; } else if… 想到的是建立一个关键值对的映射,如下所示: std::unordered_map<std::string, unsigned […]

如何检查keyReleasedcallback之间的密钥版本?

Slick2D的Input类有一个isKeyPressed()方法,根据指定的键是否被按isKeyPressed()返回一个布尔值。 我想检查一个密钥是否以同样的方式被释放。 我看着添加一个KeyListener到input对象,并覆盖keyReleased()方法。 然而,因为我目前正在处理BasicGame的update()方法中的input,所以我将通过在两个不同的地方处理input来破坏我的代码,这是我想避免的。

游戏循环之间的input处理

这对你来说可能是显而易见的,但由于我是一个编程新手,所以我带着一个具体的问题。 我的游戏引擎中有三个循环,分别是input-loop,update-loop和render-loop。 更新循环设置为每秒10个刻度,固定的时间步长,渲染循环的上限约为60 fps,input循环的运行速度尽可能快。 我正在使用提供这样的东西的Javascript框架之一,但它并不重要。 比方说,我正在渲染一个瓦片贴图,而渲染哪些元素的视图取决于在按键过程中被修改的相机状运动variables。 这只是关于相机/视口和渲染,这里没有涉及游戏物理。 而现在,我如何处理这些循环之间的input事件,以保持一致的引擎反应? 我是否应该读取当前使用input修改的variables,并在更新循环中执行一些所需的计算,并共享结果,以便可以在渲染循环中进行插值? 或者直接在渲染循环内部读取input效果,并把所需的计算内? 我认为在一个较低的滴答速率的更新循环内解释用户input将是不准确的,并且在最终视图中使用插值进行渲染时没有反应。 游戏整体如何完成?

使用C ++中的SDL引用键盘按键“justPressed”,“pressed”和“justReleased”

我正在C ++中用OpenGL和SDL教自己的3Dgraphics。 我在一个点,我需要能够查询个别键的状态,如下所示: if (InputManager::justPressed(SDLK_UP)) {} if (InputManager::pressed(SDLK_UP)) {} if (InputManager::justReleased(SDLK_UP) {} 我不知道是否应该使用SDL_GetKeyboardState或SDL_Keycode / SDL_Scancode布尔数组,使用状态似乎是我更正确的方法。 我以前在C#中用XNA实现了这一点( 参见这里 )。 但是我试图用SDL来复制这个问题一直没有成功。 方法1 – 使用SDL_GetKeyboardState // InputManager stores Uint8* _curKeys, _oldKeys; void InputManager::init() { _curKeys = SDL_GetKeyboardState(NULL); _oldKeys = new Uint8[sizeof(_curKeys)/sizeof(Uint8)]; } void InputManager::update() { memcpy(_oldKeys, _curKeys, sizeof(_curKeys)/sizeof(Uint8)); // this seems to work std::copy(std::begin(_curKeys), std::end(_oldKeys), std::begin(_curKeys)); } bool […]

Unity:无法从StandaloneInputModule访问repeatDelay?

我有一个非常具体的问题。 我试图改变我的StandaloneInputModule repeatDelayvariables,但它不是作为一个variables。 当我使用GetComponent<StandaloneInputModule>() ,所有其他variables出现,但不是我想要的。 repeatDelay有什么不同,我没有看到? 编辑:我也使用UnityEngine.EventSystems命名空间。

如何基于鼠标位置在Z轴上插入对象的旋转?

我需要应用旋转到一个对象,基于鼠标移动到一个z-axis只。 我们来拍这张照片吧: 紫罗兰色 – 当前的鼠标位置 蓝色 – 鼠标移动 红色 – 要旋转的对象 我使用这个脚本,它工作正常: mousePos = Input.mousePosition; screenPos = Camera.main.ScreenToWorldPoint(Vector3(mousePos.x, mousePos.y, transform.position.z – Camera.main.transform.position.z)); transform.rotation.eulerAngles.z = Mathf.Atan2((screenPos.y – transform.position.y), (screenPos.x – transform.position.x)) * Mathf.Rad2Deg; 但是…这是我不想要的实时工作,所以我需要插入它。 我用Quaternion.Lerp/Slerp ,我得到了一个奇怪的结果。 当我将鼠标移动得太快(围绕立方体旋转)时,它将跳到鼠标的新位置(这是正确的),但是当角度从-180改变到180或180到-180时,它会改变旋转方向。 这是因为Quaternionmath很可能是准确的 – Quaternion决定切换旋转方向,因为它find了一条较短的path。 这个问题 如何顺利(用lerp)旋转对象(在Z轴上)来查看鼠标位置,以避免在上述情况下出现上述故障?

Unity – 单击button和下拉并不总是响应(仅在构建中发布,而不在编辑器中)

我在游戏中有几个button和下拉菜单。 现在,这些元素快速响应,每次点击编辑器时,但是当我创建一个构建,我必须点击下拉和button多次,使他们执行相应的行动。 这意味着,虽然他们工作,我必须多次点击它们。 为什么只有在构建中才显示出这种行为,我能做些什么来纠正呢? 我曾尝试降低graphics设置,分辨率。 尝试在EventSystem中启用Force Module Active选项。 每个场景中只有一个canvas。

使用Event Trigger Unity改变bool的问题,但bool保持设置为false

好吧,我已经多次使用Unity事件触发器来检查Android游戏的屏幕button。 我做了很多次的一个例子是左右箭头button,它移动了角色。 有我正在使用(或试图至less!)的OnPointerDown()和OnPointerUp()方法。 所以我有一个叫做isLeftToggled的布尔,它的初始化为'false'。 OnPointerDown / Up链接到一个名为ToggleButtonLeft()的方法: public void ToggleButtonLeft(){ Debug.Log ("LEFT TOGGLED" + isLeftToggled); if (isLeftToggled) { isLeftToggled = false; } else { isLeftToggled = true; } } 上面的Debug.Log读出来确定,它切换真和假(虽然令人费解的第一个日志我得到是'真')。 然而,在我的更新方法中,我经常告诉我它是真是假,每一次调用都是错误的。 我validation了这一点,因为当我尝试使用bool来转换它时,ship(游戏角色)不会转向。 如果我把布尔初始化为“真”,并通过注释去掉切换,那么船就会变好。 我有button游戏对象的事件触发器,我不记得如果我不得不添加其他东西,使其工作。 但是我相当确定button正在工作,因为它总是打印两个button调用的方法内的Debug.Log。 任何想法为什么布尔是每个框架“假”。 上面的代码不应该在手指按在button上时将其切换为真? 这是整个class级(我想考虑修剪不相关的部分,但是不想错过重要的东西,所以决定发布整件事情): public class Player : MonoBehaviour { float rotationSpeed = 360f; float currentThrust = 0f; float thrustDecay = […]

LibGDX:实现触摸屏,无需触摸屏幕

我正在使用LibGDX。 比方说,我不想跳 – 但不是真的触摸屏幕,我不想用键盘,并实施触摸,就像我在触摸屏幕。 我可以这样做吗? 可以让我们说“testing”button,而不必按(从应用程序/ android / ios /等..触摸屏)? InputListener中的button示例: final Image imageJumpButton = new Image(new Texture("jbjump.png")); imageJumpButton.addListener(new InputListener() { @Override public boolean touchDown(InputEvent event, float x, float y, int pointer, int button) { JOYSTICK_UP= true; return true; } @Override public void touchUp(InputEvent event, float x, float y, int pointer, int button) { JOYSTICK_UP […]