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

weixin_38078242 2019-09-12 03:00:58

为什么Gravity在Unity2D的Physics2D引擎中行为不同时,这两行代码是否交替执行? 例如,我已经连接到我的球员精灵一个玩家控制器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:我的性格,现在需要较长时间下跌(它慢慢地“浮”下) 。 这是为什么?








...全文
107 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38085883 2019-09-12
  • 打赏
  • 举报
回复

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

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧