作者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
1F:推 ericinttu:就操作面来讲, 限制 (x2,y2) 在角度范围内比较合理. 08/25 01:43
2F:→ InitialPower:因为是作在手机上,所以不像滑鼠可以限制准星的范围 08/25 11:15
3F:→ InitialPower:所以就折衷这样做了 08/25 11:16
4F:→ help0430:我不懂~两点间的角度怎麽算? 08/26 19:36
5F:→ help0430:不说角度的问题~你要子弹由A点飞往B点 08/26 19:37
6F:→ help0430:只要用B点座标减A点座标~得到向量~正规化後再乘速度即可 08/26 19:38
7F:→ help0430:不必每次都计算角度吧! 08/26 19:38