0
我正在C++中使用SFML和Box2D庫製作平臺遊戲。玩家有手槍,我正在嘗試拍攝。從2點延長線到一定長度
Box2D具有RayCast功能,需要兩個位置來檢查兩者之間的交點。 我有玩家位置和鼠標位置。目前這兩條線之間的檢查並不理想。
我需要第三個位置,這是手槍射擊結束的位置。 玩家位置和第三個位置之間的距離應該始終爲1000.
我正在C++中使用SFML和Box2D庫製作平臺遊戲。玩家有手槍,我正在嘗試拍攝。從2點延長線到一定長度
Box2D具有RayCast功能,需要兩個位置來檢查兩者之間的交點。 我有玩家位置和鼠標位置。目前這兩條線之間的檢查並不理想。
我需要第三個位置,這是手槍射擊結束的位置。 玩家位置和第三個位置之間的距離應該始終爲1000.
數學很簡單。考慮下面的線,A和B是你的已知點(A爲段,即起源您的播放器)和C是你正在尋找第三點:
A-----------B------------C
(Xa,Ya) (Xb,Yb) (Xc,Yc)
現在距離:
AB = sqrt((Xb - Xa)² + (Yb - Ya)²)
AC = 1000
叉乘得到XC:
AB -> Xb - Xa
AC -> Xc - Xa
Xc - Xa = AC * (Xb - Xa)/AB
Xc = Xa + (AC * (Xb - Xa)/AB)
同樣,Yc = Ya + (AC * (Yb - Ya)/AB)
請注意,如果C位於A和B之間,則這也適用,如果A和B是相同的點(僅顯示)限制(AB = 0
,不傳送方向信息並正確產生零除)。
謝謝兄弟! :d –