2016-06-18 75 views
0

我試圖通過在屏幕邊緣有一個圖標來引導玩家到場上的最後一個敵人指向屏幕外的最後一個敵人。找到一條線段(矩形內部的一個點,外部的一個點)和直腸側的交點

屏幕是矩形,玩家是矩形內的點,敵人是矩形外的點。

Example

我能想到的都發現哪邊的解決方案將相交(這我不知道如何正確地做,但我想首先涉及發現,如果將垂直或水平兩側相交)然後使用線性方程來找到x或y。或者,你可以在每一邊使用直線交叉方法,但由於屏幕直角不會改變,這似乎有點矯枉過正。

我已經爲我的第一個解決方案在紙上做了一個測試用例,但在Unity中無法使用它。

有沒有人有解決方案或可以推動我在正確的方向嗎?非常感謝。

回答

0

讓我們的矩形邊緣有方程

X = XLeft 
Y = YBottom 
X = XRight 
Y = YTop 

球員敵人矢量

D = (D.X, D.Y) = (E.X - P.X, E.Y - P.Y) 

如果DX是積極的,考慮右邊緣(否則左)

P.X + t * D.X = XRight 

如果交集DY是正數,考慮與頂邊相交(否則與底部)

P.Y + u * DY.Y = YTop 

求解t和u的方程。如果u小於t,有橫邊路口先行,並找到交集與表達

XInt = P.X + u * D.X 
+0

由於X座標,這個作品! 會有一種方法來檢測算法中敵人是否在矩形內?現在我只是檢查它是否在矩形中,如果是,我取消計算交點。 – user1940572

+0

是的,可以檢測到敵人是否位於矩形 - 't> 1'和'u> 1'內。但是,檢查矩陣是比較簡單的,所以我認爲 - 在計算之前做這件事是值得的。 – MBo

相關問題