【问题标题】:How can I make a game object jump when I press a key (preferably space)?当我按下一个键(最好是空格)时,如何使游戏对象跳跃?
【发布时间】:2017-06-16 05:16:26
【问题描述】:

我有这个 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#,如果解决方法很明显,请见谅。

【问题讨论】:

  • 我知道您的问题中有一个代码,但我感觉您没有编写代码,因为问题的提出方式。我建议您了解 Unity 的工作原理。只需关注他们的任何project tutorials,您就可以开始编写自己的代码。
  • 至于改变应该按下的键,使用KeyCode.Space。您可以看到从this 帖子跳转的示例。但是,如果您不知道如何设置图层并将地面放置在正确的图层中,它将无法正常工作。
  • @Programmer 我已经把地放到地层了。我会在哪里使用 KeyCode.Space 呢?有没有地方可以设置使用哪个键?

标签: c# unity3d unity5


【解决方案1】:

此行最有可能导致问题:

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

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

  1. 您尚未设置地砖或角色移动到“地面”层的位置。默认情况下你不会有这个,但你可以从 Project Settings->Tags and Layers 菜单中添加它。

  2. 您的对撞机离地面不够近,因此不会引起碰撞。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多