【发布时间】:2017-12-18 03:50:22
【问题描述】:
为什么当以下两行代码交替实现时,Unity2D 的 Physics2D 引擎中的 Gravity 表现不同?
例如,我在我的播放器精灵上附加了一个播放器控制器 C# 脚本:
private float speed = 500f;
RigidBody2D playerChar = null;
然后让我的角色行走:
Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.AddForce(vec * speed);
重力设置为 50
结果一:我的角色头像正常跌倒。
当我这样做的时候:
Vector2 vec = new Vector2 (Input.GetAxis("Horizontal"), 0);
playerChar.velocity = (vec * speed);
并且重力仍然设置为 50
结果 2:我的角色现在需要很长时间才能下落(它会慢慢“飘”下来)。
为什么会这样?
【问题讨论】:
-
我不是统一开发人员,但我的猜测是因为增加力会增加你的加速度,而增加速度不会。当你说你的角色漂浮时……它是不是一开始漂浮得比较慢,然后慢慢增加它的漂浮速度?
-
它以缓慢的恒定速度漂浮。当我执行 AddForce() 时,它会向下加速。
标签: c# unity3d game-development