繁体   English   中英

如何在 Unity 3d 中跳转?

[英]How to jump in Unity 3d?

任何人都可以与我分享一个脚本,我可以用它来跳跃这个脚本的角色吗? 我将不胜感激,我 12 岁,刚刚开始,它将帮助我完成我的项目。 先感谢您。

我建议从他们网站上的一些课程开始( http://unity3d.com/learn ),但要回答您的问题,以下是一个可行的通用脚本。

using UnityEngine;
using System.Collections;

[RequireComponent(typeof(Rigidbody))]
public class PlayerController : MonoBehaviour {
    public Vector3 jump;
    public float jumpForce = 2.0f;

    public bool isGrounded;
    Rigidbody rb;
    void Start(){
        rb = GetComponent<Rigidbody>();
        jump = new Vector3(0.0f, 2.0f, 0.0f);
    }

    void OnCollisionStay(){
        isGrounded = true;
    }

    void Update(){
        if(Input.GetKeyDown(KeyCode.Space) && isGrounded){

            rb.AddForce(jump * jumpForce, ForceMode.Impulse);
            isGrounded = false;
        }
    }
}

让我们分解一下:

[RequireComponent(typeof(Rigidbody))] 

在我们进行任何计算之前,要确保您首先拥有一个刚体。

public Vector3 jump; 

Vector3 是一个存储三个轴值的变量。 在这里,我们使用它来确定我们在哪里跳跃。

public bool isGrounded; 

我们需要确定它们是否在地面上。 布尔值(或布尔值)表示是我们是(真),或者不是我们不是(假)。

void OnCollisionStay(){
    isGrounded = true;
}

Start()中,我们将变量 rb (从Rigidbody rb设置)分配给附加到您的 GameObj 的组件,并且我们为 Vector3 跳转分配值。

然后我们用这个Update()

if(Input.GetKeyDown(KeyCode.Space) && isGrounded){     
    rb.AddForce(jump * jumpForce, ForceMode.Impulse);
    isGrounded = false;
}

意味着如果玩家按下 Space 按钮,同时 GameObj 接地,它将给刚体添加一个物理力,使用。

AddForce(Vector3 force, ForceMode mode)

其中 force 是存储运动信息的 Vector3,mode 是施加力的方式(mode 可以是 ForceMode.Force、ForceMode.Acceleration、ForceMode.Impulse 或 ForceMode.VelocityChange,更多信息请参见 ForceMode)。

最后,谷歌是你最好的朋友。 一定要在未来用尽你的选择,以获得最快的结果!

答案是对此的简化重写: https://answers.unity.com/questions/1020197/can-someone-help-me-make-a-simple-jump-script.html

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM