【问题标题】:Are My Unity 2D Transform.Position Units Changing Between Builds?我的 Unity 2D Transform.Position 单位是否在构建之间发生变化?
【发布时间】:2020-04-27 05:41:36
【问题描述】:

我整理了一个小 Git 存储库,与您分享我一直在开发的 Unity 2D 平台游戏中的一些脚本。我在 Movement.cs 脚本中(在 repo 中的 Scripts/Character 下)编写了一些基本的 WASD 运动控制,它运行得非常好。它可以完成我需要它做的所有事情,虽然它是基本的,但我打算在游戏开发过程中对其进行一些改进。但是,我一直注意到,每次构建游戏时,每个移动的实体都会以更快的速度移动。我编程到像 Chompas 和 BadBirds 这样的敌人中的“AI”(是的,我使用术语非常)似乎太快或太慢,用户控制的动作和动画加电也是如此气泡。

现在,我相信我可以追溯到我创建翻译的方式;每当我需要移动对象或实体时,我都会将向量添加到 Transform.Position。这些向量接受浮点值作为它们的参数,并且看到我不完全清楚这些值代表什么,我觉得这可能是问题所在。这些距离值是否代表了某些可能在构建之间发生变化的动态测量系统?如果是这样,我该如何标准化我的距离?我完全偏离标准了吗?哈哈。非常感谢任何和所有帮助。

明确地说,无论是否进行了更改,每次我点击播放时都会出现此问题。再次感谢!

Git repo

【问题讨论】:

    标签: c# unity3d


    【解决方案1】:

    尝试将您的运动乘以Time.deltaTime
    如果你不这样做(它看起来不像你),那么你所有的游戏对象都会以不一致的速度移动。这样做的原因是每帧调用一次 void Update() get,并且每秒绘制的帧数是可变的(有时您的游戏会比其他时候运行得快一点),因此您的速度将是可变的如果不乘以Time.deltaTime(Time.deltaTime 是自上一帧以来经过的时间量,请参阅documentation
    另一种选择是使用带有 FixedUpdate() 的 Unity 内置物理系统,它以固定速率调用。
    我强烈建议您关注如何制作平台游戏控制器等的在线教程,例如this one。这样做将有助于教您良好的做法以及如何避免常见错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-29
      • 2023-03-04
      • 1970-01-01
      相关资源
      最近更新 更多