根据轨迹方向,使用AddForce向前滚动球

时间:2019-01-25 14:27:14

标签: unity3d direction normals

我有一个球可以单独向前移动,玩家只需要向左或向右转就可以得到宝石,而不会掉下来。

问题是我使用了一个名为AddForce的函数来推动球向前移动,但是我不知道如何根据轨道的方向来适应方向。如果有个左转弯,例如,我希望我的球自行转弯以重新适应赛道,使摄像机紧随其后。

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal") * sideSpeed * rb.velocity.magnitude / acceleration;

    if (rb.velocity.magnitude <= speedLimit)
    {
        rb.AddForce(0.0f, 0.0f, acceleration); // add vertical force
    }
    rb.AddForce(moveHorizontal, 0.0f, 0.0f); // add horizontal force
}

Screenshot

1 个答案:

答案 0 :(得分:0)

您可以尝试使用Rigidbody.AddRelativeForce(),在球的相对向前方向上施加力,因此,无论球旋转了多少,球总是向前移动。尝试这样的事情:

void FixedUpdate()
{
    float moveHorizontal = Input.GetAxis("Horizontal") * sideSpeed * rb.velocity.magnitude / acceleration;

    if (rb.velocity.magnitude <= speedLimit)
    {
        rb.AddRelativeForce(0.0f, 0.0f, acceleration); // Add vertical force
    }

    rb.AddRelativeForce(moveHorizontal, 0.0f, 0.0f); // Add relative horizontal force
}

希望这会有所帮助!