看板 GameDesign 關於我們 聯絡資訊
   剛剛做出我的第二個疑問  所以來分享一下  就是已知angle,speed,要如何計算點移動量dx,dy    這個主要要做成以下的應用   當玩家按下螢幕上的某一點X2,Y2   就從玩家目前所在的位置X1,Y1   射出一顆子彈沿著(X1,Y1)至(X2,Y2)行走的子彈  然後有幾個前提   1.子彈沒有打中敵人的話,必須飛出螢幕之外   2.因為遊戲類型的關係,射擊角度只能限定在+-30度   3.子彈飛行的速度必須一致  所以想來想去,只能用角度來轉換成子彈的飛行路徑  因此我必須   1.先計算(X1,Y1)(X2,Y2)兩點間的角度   2.如果超過+-30度的話,強制設定角度為+30度或-30度   3.利用角度與子彈速度計算,X軸與Y軸的位移量    我的解決法是這樣的(in lua)  local dx = math.sin( math.rad( angle ) ) * speed;  local dy = math.cos( math.rad( angle ) ) * -speed;  bullet:setLinearVelocity( dx, dy );  這段程式碼可能會因為各語言座標軸或是其他功能需要更改  如果需要的人可以自行參考摟,多謝指教   -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.105.100.157
ericinttu:就操作面來講, 限制 (x2,y2) 在角度範圍內比較合理. 08/25 01:43
InitialPower:因為是作在手機上,所以不像滑鼠可以限制準星的範圍 08/25 11:15
InitialPower:所以就折衷這樣做了 08/25 11:16
help0430:我不懂~兩點間的角度怎麼算? 08/26 19:36
help0430:不說角度的問題~你要子彈由A點飛往B點 08/26 19:37
help0430:只要用B點座標減A點座標~得到向量~正規化後再乘速度即可 08/26 19:38
help0430:不必每次都計算角度吧! 08/26 19:38