繁体   English   中英

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

[英]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:我的角色现在需要很长时间才能摔倒(慢慢地“漂浮”下来)。

这是为什么?

这是因为你强迫刚体速度的y分量为零。

添加力时,它会添加 ,但不会替换。

当你设置速度时,你专门将它设置为一个值为0的Vector2,重力然后在固定的更新周期开始并增加一点重力,导致你的玩家缓慢下降。 然后再次发生更新,并再次强制y值回到0。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM