【发布时间】:2019-12-23 17:18:40
【问题描述】:
正如标题所示,我正在尝试不同的方法,但没有解决。 我需要检查鼠标是否在 PlayMode 中的两个 2d 点之间。 我想过使用 rect 在两个 vector2 之间动态构建一个矩形,并使用 rect.contains 检查鼠标位置是否在矩形内。如果矩形是水平的但屏幕上的点未对齐,并且在我看来没有办法创建倾斜矩形,则此方法有效。 我试图计算两点之间的 距离,创建矩形并移动其 center 以旋转它,但它似乎不起作用。此外,似乎没有办法在屏幕上显示矩形,因此很难理解在更改某些参数后它是否保持原来的形状。 你有什么建议吗?但我需要检测区域是矩形的,而不是在一条线上。使用LineCast可以解决,但是检测到的区域太窄。
我想到了两个向量之间的一个矩形。想象一条连接两个向量的单像素线。现在将线条的粗细增加到 10/20 像素,以便在原始线条之前和之后检测到鼠标。也许我错了,但我认为新的 rect 是一个很好的解决方案,但就我查看它的所有属性而言,我无法理解如何在没有太多代码行的情况下在两个向量之间构建它。
【问题讨论】:
-
屏幕上的点不对齐是什么意思?始终可以在 2 个 2D 点之间构建一个矩形。如果“未对齐”意味着一个比另一个更深,只需移除深度分量即可。
-
“两点”是指两个 Vector2。例如 Vector2 (10,10) 和 Vector2 (50,50)。我需要检测鼠标何时在连接两个向量的线上。但是单条线很窄,很难通过将鼠标悬停在上面来检测。出于这个原因,我想到了一个矩形。当我说这些点未对齐时,我的意思是它们不在同一个 y 轴上,z 轴为 0。我确定我错了,但是如何构建一个从一个向量 2 倾斜到另一个向量 2 的新矩形?
-
找到从鼠标位置到你的两点定义的线的距离。如果该距离低于某个阈值,则认为它“在线”。
-
目的是将这个系统用作对撞机。出于这个原因,我想到了两个向量之间的矩形。想象一条连接两个向量的单像素线。现在将线条的粗细增加到 10/20 像素,以便在原始线条之前和之后检测到鼠标。也许我错了,但我认为新的 rect 是一个很好的解决方案,但就我查看它的所有属性而言,我无法理解如何在没有太多代码行的情况下在两个向量之间构建它。