XNA 2D鼠标选择

APa*_*mer 2 c# xna 2d mouse-picking

我正在使用XNA开发一个简单的2D实时策略游戏.现在我已经达到了我需要能够点击单元或建筑物的精灵并且能够引用与该精灵相关联的对象的点.根据我过去三天所做的研究,我发现了许多关于如何在3D中进行"鼠标拾取"的参考资料,这似乎不适用于我的情况.我知道另一种方法是简单地在世界中拥有一个包含所有"可选"对象的数组,当玩家点击一个精灵时,它会根据数组中所有对象的位置检查鼠标位置.我对这种方法的问题是,如果单位和建筑物的数量增长到更大的数量,它会变得相当慢.(它似乎也不是很优雅)所以我还能做些什么呢?(请注意,我还研究了使用哈希表将对象与精灵位置相关联的想法,并使用二维数组,其中数组中的每个位置代表世界上的一个像素.再一次,他们看起来更像笨重的做事方式.)

And*_*ell 5

对于多达数百个单位,如果点击区域是圆形或矩形,它应该足够快,以便在世界上的所有单位上简单地进行线性搜索O(n).特别是看到每次点击一次,而不是每帧一次.

如果您的单位不是圆形或矩形,请首先检查边界圆或矩形,如果通过则检查更复杂的边界形状.

有关更详细的答案,这是我对类似空间分区问题的答案.在那里我提到了bucketed网格和四叉树作为性能优化的潜在结构.

但是,在测试并确实存在性能问题之前,您永远不应该进行性能优化!