我正在製作一款基於射手的遊戲。 我的射手是在屏幕的中間,我可以接觸與event.x,event.y屏幕時,移動射擊的旋轉,但我的問題: 我想打一個按鈕,從拍攝的子彈射手朝着射手所展現的方向發展。 我知道我可以用三角函數解決這個問題,但我正在尋找一種更簡單的方法。 任何人都知道如何做一個輪換過渡? 謝謝 Fannick自轉球(轉換)
Q
自轉球(轉換)
0
A
回答
0
他就是這樣! :)從中間的一個物體開始,隨着物體的旋轉度數,它將定義子彈在過渡到的位置,請注意「c」是射手,「h」是display.contentHeight和「 w「display.contentWidth。我還將bulletX和bulletY定義爲子彈的第二個位置。
if c.rotation <= math.deg(math.atan((h/2)/(w/2))) and c.rotation >= 0 then
bulletX = w
bulletY = h/2 + w/2 * math.tan((c.rotation * math.pi)/180)
elseif c.rotation > math.tan(math.rad((h/2)/(w/2))) and c.rotation <= 90 then
bulletX = w/2 + math.tan((90 * math.pi)/180 - (c.rotation * math.pi)/180) * h/2
bulletY = h
elseif c.rotation > 90 and c.rotation <= 90 + math.deg(math.atan((w/2)/(h/2))) then
bulletX = w/2 - math.tan(((c.rotation * math.pi)/180) - ((90 * math.pi)/180)) * h/2
bulletY = h
elseif c.rotation > 90 + math.deg(math.atan((w/2)/(h/2))) and c.rotation <= 180 then
bulletX = 0
bulletY = h/2 + math.tan(math.pi - ((c.rotation*math.pi)/180)) * w/2
elseif c.rotation > 180 and c.rotation <= 180 + math.deg(math.atan ((h/2)/(w/2))) then
bulletX = 0
bulletY = h/2 - math.tan(((c.rotation * math.pi)/180) - math.pi) * w/2
elseif c.rotation > 180 + math.deg(math.atan ((h/2)/(w/2))) and c.rotation <= 270 then
bulletX = w/2 - math.tan(((270 * math.pi)/180) - ((c.rotation * math.pi)/180)) * h/2
bulletY = 0
elseif c.rotation > 270 and c.rotation <= 270 + math.deg(math.atan((w/2)/(h/2))) then
bulletX = w/2 + math.tan(((c.rotation * math.pi)/180) - ((270 * math.pi)/180)) * h/2
bulletY = 0
elseif c.rotation > 270 + math.deg(math.atan((w/2)/(h/2))) and c.rotation <= 360 then
bulletX = w
bulletY = h/2 - math.tan(((360 * math.pi)/180) - ((c.rotation * math.pi)/180)) * w/2
end
1
老實說,我不知道現在如果有可能拉這一關沒有三角(和我有急事,所以我真的沒有想到一上來的時候),但即使我非常懷疑這會使這個過程變得更容易。
「罪」和「COS」是兩個功能似乎相當嚇人的初學者,尤其是在這樣的背景下,但坦率地說,他們是相當溫順。你可以做的最好的事情是上網搜索一些三角函數的解釋(一些大學教授發佈他們的講座文檔,並且通常對剛剛開始學習的初學者做出解釋),你會得到掛起它很快。因爲知道如何將這些知識應用於進一步的問題後來可以證明是非常有用的,找到一個不需要使用三角法的「解決方法」是不值得的。
0
您可以使用電暈物理模塊。它可能會更容易,如果您也需要它,甚至可以輕鬆實現碰撞檢測。 看一看這些鏈接:
隨着物理引擎,你只需要重力設置爲0,你的子彈添加到與addBody的物理引擎()然後對子彈施加衝動,使其沿着你想要的方向(你的目標)移動applyLinearImpulse()。
+0
非常棒! :) 謝謝! – Fannick
相關問題
- 1. 將BoxGeometry轉換爲球體
- 2. C++自動「類型轉換的轉換
- 3. 自定義UIViewController轉換與自轉
- 4. html5旋轉球
- 5. 眼球旋轉
- 6. 轉換球座標的疑問
- 7. 全球定位系統座標轉換
- 8. Android排球庫UTF轉換ISO
- 9. 將網格轉換爲元球
- 10. 從笛卡兒轉換爲球形matlab?
- 11. 谷歌地球模型轉換
- 12. 球拍中的數字到字轉換
- 13. 環球免稅店Jquery轉換效果
- 14. 球拍,將列表轉換爲值
- 15. 將cube轉換爲opengl中的球體
- 16. 將x/y座標轉換爲球形
- 17. 停止d3js全球自動旋轉
- 18. XDT轉換 - 轉換轉換
- 19. 自定義轉換
- 20. 自動轉換2.8
- 21. 自動XML轉換
- 22. 自動轉換,C#
- 23. C++自動轉換
- 24. 轉換鼠標點擊的經度和緯度上旋轉球
- 25. 轉換一個局部旋轉到一個全球性(矩陣)
- 26. Java AWT旋轉球
- 27. ViewVector在地球上兩個球面座標之間的轉換
- 28. Webkit轉換,轉換後轉換
- 29. jQuery + Webkit + ...自動切換CSS3轉換/轉換和JavaScript?
- 30. 足球結果轉化爲進球數
你有什麼累了這麼遠嗎? – agconti
好了,現在什麼都沒有,我知道這可能與三角做,我只是想辯別如何解決這個問題,我imaginated創建一個無形的圈子,和方向的射手正顯示出將被顯示爲點在圈子上做轉型。 (圓實際上離開了屏幕,所以從中心開始,以半徑250爲例) – Fannick