【问题标题】:XNA How can I get the color behind a spriteXNA 如何获得精灵背后的颜色
【发布时间】:2012-07-24 20:15:39
【问题描述】:

我目前正在开发一个在加载的背景上生成随机黑色地形的 2D 项目。我有一个加载和控制的精灵,我试图找出识别精灵背后颜色的最佳方法,以编码一些基于颜色的碰撞。我已经尝试了一堆关于每像素和颜色的教程,但它们似乎都依赖于正在使用的碰撞贴图或两个预加载图像 IE 之间的边界框:精灵和碰撞对象。

如果有人能指出我正确的方向,那将不胜感激。

【问题讨论】:

    标签: colors xna 2d collision terrain


    【解决方案1】:

    查询纹理是一项相对昂贵的操作;我强烈建议您避免实时这样做。既然您是在运行时以程序方式生成地形信息,为什么不将其存储在一个数组中并引用它呢?

    如果您需要合成纹理或执行其他渲染操作以创建地形数据,您可以使用以下代码将生成的渲染目标数据复制到系统内存中的数组中:

    var data = new Color[width * height];
    texture.GetData(data);
    

    请尽量避免不必要地频繁这样做。

    【讨论】:

    • 谢谢,我想我们需要在碰撞方面做一些别的事情,然后它接缝的共识是 perpix 会活着吃掉游戏。
    【解决方案2】:

    我认为正确的方向是远离像素完美的碰撞。大多数人认为这是必要的,但事实是,99% 的游戏不使用像素完美碰撞,因为它们速度慢、难以正确实现,并且对于大多数实际游戏来说过于矫枉过正。大多数游戏使用AABBs、圆圈或球体。它们很容易检测到它们之间的碰撞,并且对于大多数游戏来说“足够好”。我能说出的唯一一个使用像素完美碰撞的游戏是最初的 Worms。

    这个视频也很好地涵盖了碰撞检测:http://pyvideo.org/video/615/introduction-to-game-development(碰撞检测@1:13:20)

    【讨论】:

    • 谢谢 和上面一样似乎是共识。
    猜你喜欢
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多