我正在尝试制作我的第一款游戏。它是一个简单的无限滚动2D游戏,使用Unity 4.3.4构建。和C#。
一切都很好,但如果仔细观察,你会发现它有轻微的打嗝。当你仔细观察左边时,颗粒根本不会平滑。
我做错了什么?看起来帧速率有问题。
实时版:http://www.atticweb.nl/peekgame/下载:https://dl.dropboxusercontent.com/u/6929740/peekseek.rar
我可以通过改变速度给他前进动作吗? : rigidbody2D.velocity = new Vector2(speed,rigidbody2D.velocity.y)
答案 0 :(得分:0)
如果你正在通过速度= 50来移动东西;你会看到跳转,因为每次都没有以完全相同的间隔调用update()。你会想要使用Time.deltaTime * speed;这将使事情顺利进行,因为它需要从上次刷新开始并乘以速度,因此您通常会产生每秒50个单位。
答案 1 :(得分:0)
RigidBody
仅在每个物理帧中更新,通常约为1/20秒。这可能会导致快速移动的物体出现跳跃式运动,例如。如果你的游戏是60 FPS,你的物理对象一次在同一个地方停留3帧。
要解决此问题,请设置RigidBody
:
RigidbodyInterpolation.Interpolate
会平滑RigidBody
的移动,但会导致它延迟到达目的地RigidbodyInterpolation.Extrapolate
将使其在接下来的几帧中以相同的速度继续移动。它将在正确的框架上到达目的地,但如果你的速度快速改变方向,它仍然看起来很尖锐。设置插值模式会使计算更加昂贵,因此您通常只想对播放器直接控制的快速移动对象或对象执行此操作。