在Unity中,我的UI Canvas上有两个对象。我试图绘制一条线,从一个对象的边缘开始,并动态地结束另一个对象的边缘。我可以想到一种方法:
使用来自每个对象中心的线条,找到线条与对象边缘相交的点。在下面的屏幕截图中,这些将是黄色和紫色点。
有没有人有关于如何编码的指示?我无法找到交叉点。提前谢谢!
答案 0 :(得分:1)
让矩形的中心具有坐标(acx,acy)
和(bcx, bcy)
,矩形宽度和高度为aw, ah, bw, bh
。
寻找中心差异
(dx, dy) = (bcx-acx, bcy-acy)
如果
,则线与矩形的垂直边相交Abs(dx) * ah >= Abs(dy) * aw
(否则为水平边缘)
如果dx>0
为右边,交点x坐标为A.right
,否则为A.left
。
并且您必须求解方程(由于三角形相似性)才能找到交点y坐标
aw/2 / Abs(dx) = (aintersection.y - acy) / dy
aintersection.y = acy + aw * dy / (2*dx)
通过类比考虑水平边缘情况