gpt4 book ai didi

c# - XNA 2D 鼠标拾取

转载 作者:行者123 更新时间:2023-12-04 01:45:13 24 4
gpt4 key购买 nike

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

最佳答案

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

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

有关空间分区的更详细答案,here's my answer to a similar question。我在那里提到了桶状网格和四叉树作为性能优化的潜在结构。

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

关于c# - XNA 2D 鼠标拾取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524710/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com