2011-06-09 107 views
0

我想知道它是怎么可能的,我可以在某个点绘制一个对象并移动到屏幕上的点。我试图将它用于我的游戏,当用户触摸屏幕时,枪会从玩家的位置触发,但玩家是静止的。移动对象帮助

在此先感谢。

P.S.

是否有某种视觉图形显示每个情节在android上的位置。

+0

我不想做一个拖放。玩家图标位于PointA,永不移动。攻击的精灵向他移动。而且我试图将它放到屏幕上,当它触摸屏幕时,它会向该位置发送一颗子弹。但是直到你触摸屏幕,子弹才会被绘制。 – Manji 2011-06-09 23:12:38

回答

0

我不知道你用什么样的库来绘制所有的事情,但基本上没有关系,因为你只需要知道为了做到这一点两件事情:

无进入矢量几何的细节:

1.您需要根据鼠标的位置计算出射弹移动的方向(x和y分量)。您可以通过简单地从玩家的位置减去鼠标的位置得到这个方向:

//x component of direction 
float direction_x = mousePosition.x - playerPosition.x; 
//y component of direction 
float direction_y = mousePosition.y - playerPosition.y; 

为了只得到一个方向,而不是添加的速度分量这一载体,需要正常化它(所以它的长度1):

float length =(float) Math.sqrt(direction_x*direction_x + direction_y*direction_y); 
direction_x /= length; 
direction_y /= length; 

然后,您需要通过添加direction_x和direction_y组件到它,乘以所需的弹要有速度更新弹位置(这个过程称为线性插值,顺便说一句):

projectile_x += direction_x*speed; 
projectile_y += direction_y*speed; 

如果您有测量两帧之间时间的方法,则速度变量应取决于这些帧之间的时间间隔,以便在不同平台上创建平滑移动。

+0

@heishe你不需要创建HTML标签来处理代码。只需选择代码并点击“代码示例”按钮(或者每行添加4个空格) – WarrenFaith 2011-06-09 23:15:56

+0

谢谢!我已经想知道为什么这么做太复杂了。我浏览了FAQ并没有找到任何东西,所以非常感谢:) – TravisG 2011-06-10 16:48:45

+0

我会把这一点放到我的项目符号类或我的线程内。 – Manji 2011-06-10 19:52:30