• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么Physics2D为AddForce()与速度产生不同的结果?

c/c++ 来源:YourWorstNightmare 5次浏览

为什么Gravity在Unity2D的Physics2D引擎中行为不同时,这两行代码是否交替执行?为什么Physics2D为AddForce()与速度产生不同的结果?

例如,我已经连接到我的球员精灵一个玩家控制器C#脚本:

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

然后让我的性格步行

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分量为零。

当你加力时,它,它不会代替。

当您设置速度时,您将其设置为具有y值为0的Vector2,重力会在固定更新周期中启动并添加少量重力,导致您的播放器缓慢下降。然后更新再次发生,你再次强制y值回到0。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)