![](/img/trans.png)
[英]My player is not moving Using transform.position in Unity 2d
[英]Are My Unity 2D Transform.Position Units Changing Between Builds?
我整理了一个小 Git 存储库,与您分享我一直在开发的 Unity 2D 平台游戏中的一些脚本。 我在 Movement.cs 脚本中(在 repo 中的 Scripts/Character 下)编写了一些基本的 WASD 运动控制,它运行得非常好。 它可以完成我需要它做的所有事情,虽然它是基本的,但我打算在游戏开发过程中对其进行一些改进。 但是,我注意到每次构建游戏时,每个移动的实体都会以更快的速度移动。 我编程到像 Chompas 和 BadBirds 这样的敌人中的“AI”(是的,我使用的术语非常宽松)似乎太快或太慢,用户控制的动作和动画通电气泡也是如此。
现在,我相信我已经将其追溯到我创建翻译的方式; 每当我需要移动 object 或实体时,我都会向 Transform.Position 添加向量。 这些向量接受浮点值作为它们的参数,并且看到我并不完全清楚这些值代表什么,我觉得这可能是问题所在。 这些距离值是否代表了某些可能在构建之间发生变化的动态测量系统? 如果是这样,我该如何标准化我的距离? 我完全偏离标准了吗? 哈哈。 非常感谢任何和所有帮助。
非常清楚,无论是否进行了更改,每次我点击播放时都会出现此问题。 再次感谢!
尝试将您的运动乘以Time.deltaTime
。
如果你不这样做(它看起来不像你),那么你所有的游戏对象都会以不一致的速度移动。 这样做的原因是每帧调用一次 void Update() get,并且每秒绘制的帧数是可变的(有时你的游戏会比其他时候运行得快一点),所以你的速度会是可变的如果您不将其乘以Time.deltaTime
(Time.deltaTime 是自上一帧以来经过的时间量,请参阅文档)
另一种选择是使用 Unity 的内置物理系统和 FixedUpdate(),它以固定的速率被调用。
我强烈建议您按照在线教程了解如何制作平台游戏 controller 等,例如这个。 这样做将有助于教您良好的做法以及如何避免常见错误。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.