【问题标题】:2D game - tiny hiccups2D 游戏 - 小问题
【发布时间】:2014-02-13 15:00:13
【问题描述】:

我正在尝试制作我的第一款游戏。它是使用 Unity 4.3.4 构建的简单无限滚动 2D 游戏。和 C#。

一切正常,但如果你仔细观察,你会发现它有一些小问题。当你仔细看左边时,粒子一点也不平滑。

我做错了什么?好像是帧率有问题什么的。

直播版:http://www.atticweb.nl/peekgame/ 下载:https://dl.dropboxusercontent.com/u/6929740/peekseek.rar


难道是我通过改变速度给他向前运动? : 刚体2D.velocity = new Vector2 (速度,刚体2D.velocity.y)

【问题讨论】:

  • 平滑是什么意思?据我所知,他们很好。顺便说一句,你应该在gamedev.stackoverflow.com上问这个
  • @MahanGM Unity 问题在 Stack Overflow 上非常好。用户无需前往 Gamedev。如果问题在这里明确离题,请仅将用户引导到其他网站。
  • 对“打嗝”一词的使用非常模糊。请具体说明,以便其他人可以提供帮助。
  • @Bart 嗯,这基本上是一个游戏开发问题,此外没有提供代码。如果有什么可看的,我就不会执导 OP。
  • 这些问题在这两个网站上都不是一个好问题。因此,您仍然不应该迁移它@MahanGM。

标签: c# unity3d 2d


【解决方案1】:

如果你通过速度 = 50 移动某物;你会看到跳转,因为 update() 不是每次都以完全相同的时间间隔调用。你会想要使用 Time.deltaTime * speed;这将使事情顺利进行,因为它需要从上次刷新开始的时间并乘以速度,因此您通常会产生每秒 50 个单位。

【讨论】:

  • 但是对于向前运动,我在 ridgetbody2d 上使用速度,我还需要为此使用 deltatime 吗?
【解决方案2】:

RigidBody 仅在每个物理帧更新,通常约为 1/20 秒。这可能会导致快速移动的物体出现跳跃的运动,例如。如果您的游戏是 60 FPS,那么您的物理对象一次会在同一个地方停留 3 帧。

要解决这个问题,请设置RigidBodyinterpolation mode

  • RigidbodyInterpolation.Interpolate 将平滑 RigidBody 的移动,但会导致它晚几帧到达目的地
  • RigidbodyInterpolation.Extrapolate 将使其在接下来的几帧中以相同的速度继续移动。它会在正确的帧上到达目的地,但如果你的速度快速改变方向,它仍然会看起来很跳跃。

设置插值模式会使计算成本更高,因此您通常只想对快速移动的对象或玩家直接控制的对象执行此操作。

【讨论】:

    猜你喜欢
    • 2011-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-15
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多