C# 如何在Unity2D中设置加速度?

C# 如何在Unity2D中设置加速度?,c#,unity3d,C#,Unity3d,我正在Unity中玩我自己的“恐龙游戏”(就像Chrome一样)。然而,我的恐龙加速太快了。你能帮我找到代码中的问题吗 代码如下: void FixedUpdate() { rb2d.Cast(Vector2.down, hitBuffer); float distance = hitBuffer[0].distance; if (distance > minMoveDistance) Fall(); else Move();

我正在Unity中玩我自己的“恐龙游戏”(就像Chrome一样)。然而,我的恐龙加速太快了。你能帮我找到代码中的问题吗

代码如下:

void FixedUpdate()
{
    rb2d.Cast(Vector2.down, hitBuffer);
    float distance = hitBuffer[0].distance;
    if (distance > minMoveDistance)
        Fall();
    else
        Move();
}

void Fall()
{
    transform.Translate(fall);
    fall += Physics2D.gravity * Time.fixedDeltaTime;
    fall = Vector2.ClampMagnitude(fall, 90 * Time.fixedDeltaTime);
}

void Move()
{
    transform.Translate(move);
    move.x += (acceleration * Time.fixedDeltaTime);
}
  • 你可以使用加速度来增加单位刚体的力

  • 刚体

  • 或者你自己

将加速度设置为较小的值?其下降速度过快还是移动速度过快?
public void Update()
{
    if (hasAcceleration)
    {
         // AddForce(Vector2 force, ForceMode2D mode = ForceMode2D.Force);
         // 
         rigidbody2D.AddForce(force, ForceMode2D.Force);
    }
}
public void AddForce(Vector3 force)
{
    Vector3 f = force;
    f = f / mass;
    acceleration += f;
}

public void AddForce(Vector2 force)
{
    AddForce(new Vector3(force.x, force.y, 0.0f));
}

public void UpdateMovement(float deltaTime)
{
    velocity += acceleration;
    acceleration *= 0;

    movement = velocity * deltaTime;

    transform.localPosition += movement;
}