当我按下一个键(最好是空格)时,如何让游戏对象跳跃?

时间:2017-06-15 21:08:38

标签: c# unity3d unity5

我将这个C#脚本附加到我的主相机游戏对象上,该对象也具有胶囊碰撞器属性。但是,它似乎没有做任何事情。我应该如何修改/添加此相机以使相机“跳跃”并再次跌落到地面?

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

public class Jump : MonoBehaviour {


    [HideInInspector] public bool jump = false;
    public float jumpForce = 1000f;
    public Transform groundCheck;


    private bool grounded = false;
    private Rigidbody rb;


    // Use this for initialization
    void Awake () 
    {
        rb = GetComponent<Rigidbody>();
    }

    // Update is called once per frame
    void Update () 
    {
        grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));

        if (Input.GetButtonDown("Jump") && grounded)
        {
            jump = true;
        }
    }

    void FixedUpdate()
    {

        if (jump)
        {
            rb.AddForce(new Vector2(0f, jumpForce));
            jump = false;
        }
    }
}

另外,如果可能的话,我想把钥匙作为空格键,但无论什么关键的工作还是已经很好了。我还在学习C#,如果解决方案很明显,请原谅我。

1 个答案:

答案 0 :(得分:1)

这一行最有可能导致问题:

grounded = Physics2D.Linecast(transform.position, groundCheck.position, 1 << LayerMask.NameToLayer("Ground"));`

有两个原因,它不会产生正确的结果:

  1. 您尚未设置地砖或角色移动到“地面”图层的位置。默认情况下您不会这样,但您可以从项目设置 - >标签和图层菜单中添加它。

  2. 你的对手距离地面不够近,不会造成碰撞。

  3. 除此之外它应该可以正常工作。