我试图引导玩家到场上的最后一个敌人,通过屏幕边缘的图标指向屏幕外的最后一个敌人。
屏幕是矩形,玩家是矩形内的点,敌人是矩形外的点。
我能想到的解决方案是找到哪一方将被交叉(我不确定如何正确地做,但我想首先要确定它是否会在垂直或水平两侧相交)然后使用找到x或y的线性方程。或者,您可以在每一侧使用线 - 线交叉方法,但由于屏幕矩形永远不会改变,这似乎有点矫枉过正。
我的第一个解决方案是在一个测试用例的纸上工作,但在Unity中无法使用它。
有没有人有解决方案或者可以让我朝着正确的方向前进?非常感谢。
答案 0 :(得分:0)
让矩形边有等式
X = XLeft
Y = YBottom
X = XRight
Y = YTop
玩家 - 敌人矢量
D = (D.X, D.Y) = (E.X - P.X, E.Y - P.Y)
如果D.X为正,则考虑与右边缘交叉(否则为左边)
P.X + t * D.X = XRight
如果D.Y为正,则考虑与上边缘交叉(否则与底部相交)
P.Y + u * DY.Y = YTop
解决t和u的等式。如果u
小于t
,则首先与水平边相交,找到与表达式交叉的X坐标
XInt = P.X + u * D.X