0

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

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

4

2 回答 2

2

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

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

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

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

于 2012-07-24T20:40:49.270 回答
0

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

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

于 2012-07-24T20:44:00.833 回答