【问题标题】:How to Change inputs of keyboard to touch controls in unity如何将键盘的输入更改为统一的触摸控件
【发布时间】:2019-12-06 00:46:58
【问题描述】:

我正在制作一个游戏,我只需要使用美德操纵杆而不是 WASD。我所做的一切都没有用,我真的需要一些帮助。 我现在的代码是这样的:

private void Update()   
{
    Rigidbody rb = GetComponent<Rigidbody>();
    if (Input.GetKey(KeyCode.A))
        rb.AddForce(Vector3.left);
    if (Input.GetKey(KeyCode.D))
        rb.AddForce(Vector3.right);
    if (Input.GetKey(KeyCode.W))
        rb.AddForce(Vector3.forward);
    if (Input.GetKey(KeyCode.S))
        rb.AddForce(Vector3.back);

}

不过,我也写了这段代码:

float moveHorizontal = joystick.Horizontal;
    float moveVertical = joystick.Vertical;

    Vector3 movement = new Vector3(moveHorizontal, 0.0f, moveVertical);

    rb.AddForce(movement * speed * Time.deltaTime);

我已经有一个操纵杆,我在 YT 视频中看到他使用操纵杆。水平。例如,如果操纵杆向上移动或类似的东西,我希望 W 键成为。谢谢你的时间:)

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    您的第一个代码应该可以工作,但是您添加的力量可能太小,您无法看到它移动。

    尝试将其乘以某个值,例如:rb.AddForce(Vector3.forward*50);


    即使它有效,你也应该知道它不是很优化。例如,您不应该在每次更新中都获取刚体,请尝试以下操作:

    public float speed = 50f;
    
    private Rigidbody rb;
    
    void Awake() {
        rb = GetComponent<Rigidbody>();
    }
    
    private void Update() {
        if (Input.GetKey(KeyCode.A))
            rb.AddForce(Vector3.left * speed);
        if (Input.GetKey(KeyCode.D))
            rb.AddForce(Vector3.right * speed);
        if (Input.GetKey(KeyCode.W))
            rb.AddForce(Vector3.forward * speed);
        if (Input.GetKey(KeyCode.S))
            rb.AddForce(Vector3.back * speed);
    }
    
    

    最后,对于那些更熟悉 Unity 的人,我鼓励您使用New Input System

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2016-04-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多