Jul*_*Hth 3 c# windows 3d monodevelop unity-game-engine
任何人都可以与我分享一个脚本,我可以用它来跳过这个脚本的角色吗?我将不胜感激,我 12 岁,刚刚开始,它将帮助我完成我的项目。先感谢您。
Tre*_*Dev 20
我建议从他们网站 ( 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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
让我们分解一下:
[RequireComponent(typeof(Rigidbody))]
Run Code Online (Sandbox Code Playgroud)
在我们进行任何计算之前,首先要确保您有一个刚体。
public Vector3 jump;
Run Code Online (Sandbox Code Playgroud)
Vector3 是一个存储三个轴值的变量。在这里,我们使用它来确定我们要跳跃的位置。
public bool isGrounded;
Run Code Online (Sandbox Code Playgroud)
我们需要确定它们是否在地面上。Bool(或布尔值)表示是我们是(真),或者不是我们不是(假)。
void OnCollisionStay(){
isGrounded = true;
}
Run Code Online (Sandbox Code Playgroud)
在 中Start()
,我们将变量 rb(设置自Rigidbody rb
)分配给附加到您的 GameObj 的组件,并且我们还将值分配给 Vector3 跳转。
然后我们Update()
用这个:
if(Input.GetKeyDown(KeyCode.Space) && isGrounded){
rb.AddForce(jump * jumpForce, ForceMode.Impulse);
isGrounded = false;
}
Run Code Online (Sandbox Code Playgroud)
意味着如果玩家点击 Space 按钮,同时 GameObj 被接地,它将向刚体添加一个物理力,使用。
AddForce(Vector3 force, ForceMode mode)
Run Code Online (Sandbox Code Playgroud)
其中 force 是存储运动信息的 Vector3,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