[英]C# Player move in Unity
該代碼可以很好地移動帶有左右箭頭的剛體,但是我不明白使用maxVelocity和absVelX的意義是什么,我不知道他們在代碼中的工作..當我刪除兩者時,它都可以工作非常好,但是在高級游戲水平上我似乎都需要。 這是林達(lynda)的課程表,名為“傑西·弗里曼(Jesse Freeman)的Unity 2d基本訓練”
using UnityEngine;
using System.Collections;
public class Player : MonoBehaviour {
public float speed=10f;
public Vector2 maxVelocity=new Vector2(3,5);
public bool standing;
public float jetSpeed=15f;
// Update is called once per frame
void Update () {
//Force resetted each frame
var forceX = 0f;
var forceY = 0f;
var absVelX = Mathf.Abs (rigidbody2D.velocity.x);
var absVelY = Mathf.Abs (rigidbody2D.velocity.y);
if (Input.GetKey ("right")) {
if (absVelX < maxVelocity.x)
forceX = speed;
transform.localScale=new Vector3(1,1,1);//Sprite orignal pose
} else if (Input.GetKey ("left")) {
if (absVelX < maxVelocity.x)
forceX = -speed;
transform.localScale=new Vector3(-1,1,1);//Sprite reversal pose
}
rigidbody2D.AddForce(new Vector2(forceX,forceY));
}
}
從提供的代碼中可以看出,這些變量是定義速度的極限,並分配給了rigidbody2D.velocity.x
(對abs
的調用是比較絕對矢量的大小,而不僅僅是坐標)。
尚不清楚是否設置了“ rigidbody2D.velocity.x
,但是代碼假定它可能會比3
並且程序會在該最大值處中斷。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.