作者InitialPower (InitialPower)
看板GameDesign
標題Re: [請益] 請教簡單的座標問題
時間Thu Aug 25 01:33:51 2011
剛剛做出我的第二個疑問
所以來分享一下
就是已知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