[英]Why does Physics2D produce different results for AddForce() versus velocity?
为什么重力在Physics2D发动机Unity2D行动不同的代码时,这两个以下行交替地执行?
例如,我已经附加到我的播放器精灵播放器控制器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:我的角色现在需要很长时间才能摔倒(慢慢地“漂浮”下来)。
这是为什么?
添加力时,它会添加 ,但不会替换。
当你设置速度时,你专门将它设置为一个值为0的Vector2,重力然后在固定的更新周期开始并增加一点重力,导致你的玩家缓慢下降。 然后再次发生更新,并再次强制y值回到0。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.