输入getKeyDown没有触发

时间:2018-05-27 13:20:40

标签: c# unity3d

我在Unity做了一场2D游戏。我有一个附加了这个脚本的玩家精灵。左右键移动完美,但当我尝试获取空格键时,它不起作用

using System.Collections;
    using System.Collections.Generic;
    using System;
    using UnityEngine;

    public class Player : MonoBehaviour {

        public float moveSpeed;
        public float jumpHeight;

        // Use this for initialization
        void Start () {

        }

        // Update is called once per frame
        void Update () {

            Rigidbody2D playerBody = GetComponent<Rigidbody2D>();

            if (Input.GetKeyDown("space")){
                print("fired");
                //playerBody.velocity = new Vector2(playerBody.velocity.x, jumpHeight);
            }

            if (Input.GetKey(KeyCode.LeftArrow))
            {
                playerBody.velocity = new Vector2(-moveSpeed, playerBody.velocity.y);
            }

            if (Input.GetKey(KeyCode.RightArrow))
            {
                playerBody.velocity = new Vector2(moveSpeed, playerBody.velocity.y);
            }
        }
    }

我也尝试了Keycode.Space而不是“空间”,这两种方法都不起作用

也出于某种原因,我不能删除或替换unity3d标签,但这是一个2d统一游戏。

1 个答案:

答案 0 :(得分:2)

您的代码似乎都很好,因此您的控制台窗口可能出错。确保在控制台的右上角突出显示注释框,这样当您在代码中打印某些内容时,它就会出现。另外,我建议您使用力来使角色跳跃而不是速度。在这种情况下,你说玩家的垂直速度为jumpHeight,但永远不会改回来,所以你的角色会不断向上移动。您应该将该行更改为:

playerBody.AddForce (transform.up * jumpHeight);

您可能需要相应地调整jumpHeight