将RigidBody2D移动特定数量的单位

时间:2018-01-24 11:22:44

标签: c# unity3d physics

在我的2D侧滚动游戏中,我通过操纵rigidbody.velocity使用内置物理引擎移动我的角色。

我想添加某种闪避(掷骰)技能,角色朝着方向移动3个单位。

以下是我使用的代码:

void FixedUpdate() {
    if (Input.GetKeyDown(KeyCode.A) ) {
        Vector2 pos = rb.position;
        pos.x -= 5;
        rb.MovePosition (pos);
    }
}

这种方法有效,但字符类型跳转到位置而不是移动到它(Lerping?),并且尽管体型是动态的,也不会检测到碰撞。

然后我尝试了这个:

if (Input.GetKeyDown(KeyCode.A)) {
    rb.AddForce(new Vector2(-50, 0));
}

我发现AddForce方式根本不准确。

有没有正确的方法呢?

2 个答案:

答案 0 :(得分:0)

也许您可以更改Vector2.Lerp中的Transform.pos以使其看起来流畅? (对不起,没有足够的2D统一经验。)

答案 1 :(得分:0)

只需将rigibody.velocity增加一段时间即可。然后你的chararter对象可以发挥适合的aniamtion。如果玩家不能使用midrole jsut来阻止那段时间的控制。