在我的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
方式根本不准确。
有没有正确的方法呢?
答案 0 :(得分:0)
也许您可以更改Vector2.Lerp中的Transform.pos以使其看起来流畅? (对不起,没有足够的2D统一经验。)
答案 1 :(得分:0)
只需将rigibody.velocity增加一段时间即可。然后你的chararter对象可以发挥适合的aniamtion。如果玩家不能使用midrole jsut来阻止那段时间的控制。