为什么物理2D为Addforce()与速度产生不同的结果



当physics2d引擎中的 gravity unity2d Act中的ACT不同时,当以下两行代码交替实施时?

例如,我已将播放器控制器C#脚本附加到我的播放器精灵上:

private float speed = 500f;
RigidBody2D playerChar = null;

,然后使我的角色 walk

Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.AddForce(vec * speed);

重力设置为50

结果1:我的角色头像正常下降。

同时我做:

Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.velocity  = (vec * speed);

,重力仍设置为50

结果2:我的角色现在需要很长时间才能跌落(慢慢地"浮动"下降)。

为什么?

当您添加强制时,添加,它不会替换。

设置速度时,您会专门将其设置为Y值为0的vector2,重力然后在固定的更新周期中启动并增加了少量重力,从而导致玩家缓慢掉落。然后更新再次发生,然后将y值强制回到0。

相关内容

  • 没有找到相关文章

最新更新