【发布时间】:2013-07-10 09:52:47
【问题描述】:
我正在使用 Unity 开发一款 2.5D 手机游戏。为了前后移动角色,我在更新函数中使用了一段代码:
void Update () {
if (shouldMove==true){
transform.Translate(Vector3.forward * 3 * Time.deltaTime);
}
}
因此,当游戏以 60 fps 运行时,该代码运行良好,但当 fps 降至 30 或更低时,角色在移动时开始振动。我试图用平面地形测试相同的代码并且效果很好,所以问题可能是角色和地形碰撞器之间的碰撞。但是,我不明白为什么如果 fps 很高它工作得很好。我已经尝试过胶囊对撞机和网状对撞机,但没有人成功。你怎么看?我应该尝试使用其他代码吗?
编辑 1:我正在使用胶囊对撞机和刚体。我应该使用角色控制器吗?
【问题讨论】:
-
您是说
shouldMove布尔值不断地打开和关闭,因此角色只在某些帧上移动,您与物理引擎的交互方式是驱动shouldMove值的原因? -
没有。当用户触摸一个按钮来移动角色时,应该 move 为真。当用户结束触摸它时,shouldMove 被认为是假的。
-
好吧,您可能需要更多代码或更好地描述您的物理引擎使用情况。您可能还想考虑将此发布到官方 Unity3D answers 或 support forums。更有可能有人和你处理过同样的问题。
-
查看编辑1。我已经在Unity中发布了问题。
标签: c# performance unity3d frame-rate