我正在尝试确定鼠标在等距 2D 游戏中的哪个精灵。我认为我最好的选择是将每个精灵绘制不同的颜色到单独的renderTarget2D
中,并将其转换为Texture2D
此时我可以从鼠标点获取颜色数据并将其与绘制的精灵进行检查。
但是,我在使用这种方法时遇到的问题是我无法将单个精灵的颜色更改为纯色。如果我在spriteBatch.Draw
调用中更改颜色,它只会为精灵的颜色着色,而不是以纯色绘制它,因此我从纹理中检索的数据没有帮助。
用纯色绘制这些精灵有什么建议或帮助吗?
不要那样做。创建一个新的渲染目标并将数据复制到内存中,即使每秒只有一百个精灵六十次,也远远超出了当前系统所能处理的范围。
只需使用 Rectangle 结构的 Contains
方法:
var destination = new Rectangle(100, 100, 50, 50);
bool mouseOver = destination.Contains(mouseX, mouseY);