答案 0 :(得分:1)
我建议从他们网站(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;
我们需要确定它们是否在地面上。布尔(或布尔),是的,我们是(true),否则,我们不是(false)。
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,模式是施加力的方式(模式可以是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