2012-07-24 53 views
0

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

如果任何人都可以指出我在正确的方向,这将是非常appriciated。

回答

2

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

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

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

刚尽量避免再次使用它。

+0

谢谢,我想我们需要做什么别的碰撞明智那么接缝的共识是perpix会活着吃这个游戏。 – 2012-07-24 21:49:15

0

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

这部影片也确实涵盖碰撞检测的工作:http://pyvideo.org/video/615/introduction-to-game-development(碰撞检测@ 1:13:20)

+0

谢谢同上似乎是共识。 – 2012-07-24 21:50:08