【问题标题】:Storing 100 vectors XNA存储 100 个向量 XNA
【发布时间】:2013-04-07 00:00:05
【问题描述】:

我正在制作一个 2D 自上而下的生存游戏,顶层的最大精灵数为 100 个。 当我偶尔使用随机生成它们的矢量位置时,我会在精灵之间得到一些重叠。

所以为了解决这个问题,我将存储一些预定义的位置。

问题

所以我的问题是存储这些的最佳方式是什么。最初我打算将它们存储在一个数组中,但是我认为将它们存储在一个文本文件中并在游戏开始时读取它们会是一个更好的解决方案。

我是初学者,如果有人能就此提供任何建议,将不胜感激。

非常感谢

【问题讨论】:

    标签: c# xna 2d-games


    【解决方案1】:

    是的,将它们存储在 CSV(逗号分隔值)文本文件中,或者如果您愿意,可以使用数据库,尽管我建议使用前者。在您的情况下,数据库存储听起来有点矫枉过正。在启动时,您会将值加载到数组中。如果你不这样做,游戏每次获得价值时都会滞后。您只需要用于持久存储的文本文件,然后需要用于使用的数组。

    希望这可以为您解决问题!

    【讨论】:

    • 感谢您的回答!这就是我实施的解决方案:)
    【解决方案2】:

    你为什么不检查精灵的位置是否重叠?如果精灵不经常重叠,这不应该增加太多的计算,并且比固定位置模板增加更多的随机性。

    您在类中为具有精灵的实体所做的是添加一个公共矩形,您可能已经使用一个矩形将它们绘制到屏幕上。将此公开允许您在生成实体的类中执行类似的操作。

    if (addSprite)
    {
    Entity newEntity = new Entity(random position);
    foreach (Entity e in entityList)
    {
    if (newEntity.rectangle(Intersects(newEntity.rectangle))
    {
    //give a new position to newEntity and run this loop again
    }
    else
    {
    entityList.add(newEntity);
    }
    }
    

    【讨论】:

    • 这会被视为一种蛮力方法吗?对于一个小的视口和这么多的精灵,这可能会导致循环运行很多次?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多