使用Unity3d 4.1.2,C#单声道。

执行以下脚本:

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,因此它不损失能量。

问题是我的夹具正在夹紧回弹效果,因为该夹具会影响所有Axis :(
因此,刚体永远不会返回到其y位置。

有没有一种方法可以将夹具更改为仅影响x轴?我还没有找到任何有关此的信息。

欢呼的家伙

最佳答案

是的,仅钳制x值:

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

rigidBody.velocity = clampVel;

关于c# - Unity3d:仅将幅度钳位到x轴,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19726862/

10-13 06:45