簡體   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