close
作者: InitialPower (InitialPower) 看板: GameDesign
標題: Re: [請益] 請教簡單的座標問題
時間: Thu Aug 25 01:33:51 2011
from http://www.ptt.cc/bbs/GameDesign/M.1314207233.A.6D6.html
 
 剛剛做出我的第二個疑問
 所以來分享一下
 就是已知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
arrow
arrow
    全站熱搜

    zer931 發表在 痞客邦 留言(0) 人氣()