2013-11-01 57 views
1

使用Unity3d 4.1.2,C#單聲道。Unity3d:將幅度限制爲僅x軸

去下面的腳本:

using UnityEngine; 
using System.Collections; 

public class PlayerMove : MonoBehaviour 
{ 
public float MoveSpeed = 30.0f; 

public float maxVel = 0.000000001f; 
// Use this for initialization 
void Start() 
{ 
    //Physics.gravity = Vector3(0,-50,0); 
} 

void FixedUpdate() 
{ 
    maxVel = 20f; 
    MoveSpeed = 50.0f; 
    if(Input.GetKey(KeyCode.D)) 
    { 
     rigidbody.AddForce(Vector3.right * MoveSpeed); 
     Debug.Log("BEFORE = " + rigidbody.velocity.magnitude); 
    } 

    if(Input.GetKey(KeyCode.A)) 
    { 
     rigidbody.AddForce(Vector3.left * MoveSpeed); 
    } 

    rigidbody.velocity = Vector3.ClampMagnitude(rigidbody.velocity, maxVel); 
    Debug.Log("AFTER = " + rigidbody.velocity.magnitude); 
} 
// Update is called once per frame 
void Update() 
{ 

} 
} 

正如你可以看到做工精細,有一些問題與夾具,但終於得到它的工作。

有一個問題...

在統一的物理的引擎,我改變了Y值是-30,而材料「反彈」設置爲1,所以它不損失能量。

問題是我的夾具夾緊反彈影響,因爲夾子影響所有軸:( 因此,剛體不會返回到它的y位置。

有沒有辦法來改變鉗隻影響X軸?我一直沒能找到這方面的消息

歡呼傢伙

+0

不是在計算機與現在的統一,所以我猜,但你看過剛體組件的編輯界面?這裏有幾個軸特定的鎖。我知道一個是輪換,但不知道另一個。 – stevepkr84

回答

5

是,鉗表x值:

Vector3 clampVel = rigidBody.velocity; 
clampVel.x = Mathf.Clamp(clampVel.x, min, max); 

rigidBody.velocity = clampVel; 
+0

shal我把它放到固定的更新中? – lemunk

+0

完美!把它放到固定的更新中,並作爲一個嬰兒的底部運行平穩! – lemunk

+1

是的。一直改變FixedUpdate中的剛體屬性 – Heisenbug