如果我在外部键盘上按住2个按钮,则Unity StandAlone GetAxis()不起作用

时间:2014-09-16 16:31:00

标签: macos unity3d user-input

我使用标准的Input.GetAxis("水平")和一些简单的Update()循环上的Input.GetKeyDown。

我的mac book pro的标准键盘上的所有工作。

将外部USB键盘连接到mac book pro,同时按住" B"和" V"没有检测到左箭头,轴是水平"不起作用。

另外,如果我持有" B"和左箭头" V"未检测到密钥。

任何解决方法的想法?

使用此代码复制



using UnityEngine;
using System.Collections;

public class TestKey : MonoBehaviour {


	string inputState;

	// Update is called once per frame
	void Update () 
	{
		inputState = string.Format(
			"\nAxis:{0}\nB:{1}\nV:{2}"
			,Input.GetAxis("Horizontal")
			,Input.GetKey(KeyCode.B)
			,Input.GetKey(KeyCode.V)
			);
	}


	void OnGUI()
	{
		GUI.Label(new Rect(0,0,Screen.width,Screen.height),inputState);
	}

}




2 个答案:

答案 0 :(得分:1)

听起来你的代码请求中有错误,发布你的代码,你是否在GetAxis中改变了?..当你点击另一个键而没有移动到下一部分时,你的更新循环可能会停止循环..试着看看这里

using UnityEngine;
using System.Collections;

[System.Serializable]
public class Boundary
{
    public float xMin, xMax, zMin, zMax;
}

public class PlayerController : MonoBehaviour
{
    public float speed;
    public float tilt;
    public Boundary boundary;

    void FixedUpdate ()
    {
        float moveHorizontal = Input.GetAxis ("Horizontal");
        float moveVertical = Input.GetAxis ("Vertical");

        Vector3 movement = new Vector3 (moveHorizontal, 0.0f, moveVertical);
        rigidbody.velocity = movement * speed;

        rigidbody.position = new Vector3 
        (
            Mathf.Clamp (rigidbody.position.x, boundary.xMin, boundary.xMax), 
            0.0f, 
            Mathf.Clamp (rigidbody.position.z, boundary.zMin, boundary.zMax)
        );

        rigidbody.rotation = Quaternion.Euler (0.0f, 0.0f, rigidbody.velocity.x * -tilt);
    }
}

答案 1 :(得分:0)

最后我发现这不是Unity相关问题:苹果键盘的硬件限制,不能同时跟踪多个键。

我连接另一个高端键盘(称为N-Key翻转),一切正常。

使用此链接获取有关翻转功能的参考信息:

http://en.wikipedia.org/wiki/Rollover_(key)