【问题标题】:Unity 2D repeating overworldUnity 2D 重复世界
【发布时间】:2023-04-04 09:12:01
【问题描述】:

在 Unity 中实现无限滚动的世界的最佳方式是什么?我目前有一张地图被切割成 4 个不同的预制件,当玩家移动并到达其中一个预制件的边缘时,接下来应该出现的地图部分就会出现。此外,当玩家离地图碎片足够远时,该碎片会突然消失以节省计算资源。

我也想过让它看起来像玩家在移动,但实际上是在玩家周围移动世界。所以玩家会停留在 0x 和 0y,但是当玩家做动画时,地图会移动。

我觉得有更好的方法来做这件事。如果有人能告诉我一些游戏开发的秘密,我将不胜感激。

【问题讨论】:

  • 这取决于游戏玩法/图形/相机模式/地图大小等。输入您的确切含义
  • 一张大型平面 2D 世界地图。你会在 SNES RPG 中看到的那种。像计时触发器或最终幻想。不是你会在 Seiken Densetsu 中看到的那种。 Seiken Densetsu 就像 2D 试图成为 3D,这很酷。

标签: unity3d 2d


【解决方案1】:

我为此使用了重复坐标

public MapChunk GetChunk (int x, int y)
{
    x = (int)Mathf.Repeat(x, WorldSizeX);
    y = (int)Mathf.Repeat(y, WorldSizeY);
    //Then using map chunk map[x, y]
    if (map[x, y] == null)
    {
        //For example, you can create chunks lazy (only when calls)
        GameObject block = Instantiate(ChunkPrefab);
    }
    return map[x, y];
}

【讨论】:

  • 所以你会沿着 x 和 y 移动你的玩家角色,并根据玩家角色与他当前所在的预制件边缘的距离来实例化预制件?我唯一担心的是玩家是否决定在同一个方向上移动太久。我相信如果 x 或 y 坐标太大,Unity 就会出现问题。
  • Unity 使用浮点数作为坐标——如果你的地图太大——只要让你的玩家靠近世界零(例如,你可以每隔 x 秒移动玩家周围的所有东西)
  • 这意味着您必须进行额外的偏移并将其用于保持精度(我不认为您真的需要它,如果您制作播放器,很难达到不准确的浮点距离小一点
  • hmm 我可以保留当前实例化的预制件及其坐标的参考,以便玩家进入城镇或其他地方。然后当他们从城里回来时,我可以重新实例化那些预制件和适当的位置。听起来是最合乎逻辑的方法。我只是想知道是否有更好的方法。谢谢人:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多