Java 在投射物路径中移动对象

Java 在投射物路径中移动对象,java,android,physics,Java,Android,Physics,我正在做一个android项目,我想在投射路径中移动一个对象,但不知道怎么做 我得到了首字母X和首字母Y,即横向模式下手机的左下角。此外,当用户触摸手机时,我会获取X和Y,因此我也可以通过tan-1(Y/X)计算角度,但如何计算对象的曲线路径,即X和Y 任何帮助都将不胜感激 谢谢你有一个初始点p1(X,Y),你可以在那里投掷你的射弹。你有一个用户触摸屏幕的点,比如说p2。所以,找到方向向量,比如dir=p2-p1并对其进行规格化。然后执行以下操作: 有初始速度,v=speed*dir,其中spe

我正在做一个android项目,我想在投射路径中移动一个对象,但不知道怎么做

我得到了首字母X和首字母Y,即横向模式下手机的左下角。此外,当用户触摸手机时,我会获取X和Y,因此我也可以通过tan-1(Y/X)计算角度,但如何计算对象的曲线路径,即X和Y

任何帮助都将不胜感激

谢谢

你有一个初始点p1(X,Y),你可以在那里投掷你的射弹。你有一个用户触摸屏幕的点,比如说p2。所以,找到方向向量,比如dir=p2-p1并对其进行规格化。然后执行以下操作:

  • 有初始速度,v=speed*dir,其中speed是标量因子
  • 然后,在每场比赛中,勾选附加到当前位置向量
    v=v+(0,-10);v*=dt
    ,其中(0,-10)是重力因子,dt是游戏帧之间的时间

  • 通过使用投射物方程的参数形式,可以消除按时间间隔递增的必要性

    你所需要做的就是确定你想在屏幕上走多远(从左到右)。我称之为X方向。然后,对于X方向上的每个位置(可以是一个像素,也可以是一些像素),计算Y方向上的相应位置(从下到上)

    您需要为重力引起的向下加速度设置一个值。不管你选择什么值,我就叫它g。您还需要为投射物开始运动的速度设置一个值。不管你选择什么值,我就叫它V

    参数方程为:

    Y=X*tan(θ)-(g*X^2)/(2*V^2*(余弦(θ))^2)


    因此,一旦你有了用户接触点,你就可以计算角度θ,确定V,g,和X的最大值,然后从0迭代到最大X,每次迭代你都会得到一个点(X,Y)。

    @singhh:这是一个纯数学问题,你在做数学时会遇到问题吗?是的,我在学校的课上跳过了抛射体运动一章,现在它困扰着我,你能解释一下如何在抛射体路径的每个点上找到X和Y吗?cocos2d-X能帮我吗?因为我在我的项目中使用它。弗拉明戈:谢谢你的帮助,但是你能用一些数学公式解释一下吗,比如initialX=0m,initialY=0m,initialV=50m/s,角度是45度或1弧度。使用这些初始值,如何得到x1和y1??下一个游戏的滴答声?知道了这一点,我可以计算出射弹运动的x2和y2等等:)好的。P1=(0,0)。如果角度=45度,则方向向量为(1,1)。标准化它:dir(0.707,0.707)。初始速度为v=50*(0.7070707)=(35,35),例如,dt=0.1第一个刻度:射弹点=(0,0)+dt*(35,35)=(3.5,3.5)第二个:v=(35,35)+(0,-10)=(35,25);v=0.1*(35,25)=(3.5,2.5)s=(3.5,3.5)+(3.5,2.5)=(7,6)etcSo,你的x1=3.5,y1=2.5;x2=7,y2=6,依此类推。