我正在为我的游戏引擎创建一个菜单系统,并且想知道如何能够检测鼠标何时悬停在按钮上。当按钮是正方形、矩形或圆形时,这很简单,但我想知道如何处理不规则形状的按钮。
这是否可能,如果可能,复杂性是否意味着最好简单地使用边界区域(正方形或圆形)?
使用纹理或表面数据制作位掩码。决定一个规则;例如,如果图像是 100% 透明或某种颜色,则位掩码像素设置为 0,否则将其设置为 1。对光标执行相同操作。当您检查冲突时,只需检查设置为 1 的位掩码位是否重叠。
首先,我想到的是使用数学函数。如果您知道曲线的方程,您可以通过简单地检查方程的右侧是否大于或小于“y”来计算该点是在它之下还是之上。
因此,如果您有简单y = x*x
并且想要检查点 (2,1),您可以替换它并检查:
y = 2
x = 1*1 = 1
y > 1,点在曲线上。对于相反的情况,取点 (1,2),我们得到:
y = 1
x = 2*2 = 4
y < x,点在曲线下方。