Re: [請益] 請教簡單的座標問題

看板GameDesign作者 (InitialPower)時間14年前 (2011/08/25 01:33), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串3/3 (看更多)
   剛剛做出我的第二個疑問  所以來分享一下  就是已知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

08/25 01:43, , 1F
就操作面來講, 限制 (x2,y2) 在角度範圍內比較合理.
08/25 01:43, 1F

08/25 11:15, , 2F
因為是作在手機上,所以不像滑鼠可以限制準星的範圍
08/25 11:15, 2F

08/25 11:16, , 3F
所以就折衷這樣做了
08/25 11:16, 3F

08/26 19:36, , 4F
我不懂~兩點間的角度怎麼算?
08/26 19:36, 4F

08/26 19:37, , 5F
不說角度的問題~你要子彈由A點飛往B點
08/26 19:37, 5F

08/26 19:38, , 6F
只要用B點座標減A點座標~得到向量~正規化後再乘速度即可
08/26 19:38, 6F

08/26 19:38, , 7F
不必每次都計算角度吧!
08/26 19:38, 7F
文章代碼(AID): #1ELJO1RM (GameDesign)
文章代碼(AID): #1ELJO1RM (GameDesign)