Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 精灵套件:在moveTo的影响下将物理应用于投射物_Ios_Objective C_Sprite Kit_Skphysicsbody - Fatal编程技术网

Ios 精灵套件:在moveTo的影响下将物理应用于投射物

Ios 精灵套件:在moveTo的影响下将物理应用于投射物,ios,objective-c,sprite-kit,skphysicsbody,Ios,Objective C,Sprite Kit,Skphysicsbody,我正在制作一个自上而下的游戏,在游戏中,我让大炮开火,并让炮弹通过SKAction moveTo:duration移动到单击的位置。我应该让风改变轨迹,所以我把炮弹作为一个SKPhysicsBody来实现,我将重力设置为风速,因为这是我能找到的唯一一个像风一样施加恒定力的东西。我遇到的问题是,moveTo可能是实现炮弹的错误方式。球按照它应该走的路径移动,但随后落在我不想要的轻拍位置。除了搬家,我找不到好的选择。有什么想法吗?你必须解出射弹方程,以确定施加脉冲所需的力和角度。求解该方程时,只需考

我正在制作一个自上而下的游戏,在游戏中,我让大炮开火,并让炮弹通过
SKAction moveTo:duration
移动到单击的位置。我应该让风改变轨迹,所以我把炮弹作为一个
SKPhysicsBody
来实现,我将重力设置为风速,因为这是我能找到的唯一一个像风一样施加恒定力的东西。我遇到的问题是,
moveTo
可能是实现炮弹的错误方式。球按照它应该走的路径移动,但随后落在我不想要的轻拍位置。除了搬家,我找不到好的选择。有什么想法吗?

你必须解出射弹方程,以确定施加脉冲所需的力和角度。求解该方程时,只需考虑使用applyImpulse施加到抛射体上的重力和冲量,且您的火炮到用户点击抛射体目的地的距离已知

你的applyImpulse发射射弹,你启动风和其他外力,这些外力将影响射弹路径,改变它的目的地,而不是用户点击的目的地


你需要知道一些物理和数学知识来重新安排方程并求解:)

不确定你是否需要做所有的高级数学,只需设置大炮的角度并对炮弹施加脉冲,然后使用scene.physicsWorld.gravity作为你的风,只需确保你的炮弹也有一个物理实体,它的动态和重力影响设置为真

要计算角度,请执行以下操作:

let angle = atan2(Double(touch.y - cannon.y),Double(touch.x - cannon.x))

你想将加农炮移动到一个特定的位置吗?不要使用SKActions进行实时移动,而是计算移动到特定点所需的速度。这将使您的投射物更加动态。@rakeshbs我希望用户能够单击目标位置,然后让风操纵飞行路径,使末端位置与单击的位置不同。问题是风可以在飞行中改变,所以我不能只预先计算端点使用
applyImpulse:
instead。你能给出进行这些物理计算的公式吗?这是一个更好的足球例子。要把力和弹丸的质量和加速度联系起来,你们可以使用牛顿定律,或者简单地说,力=质量x加速度,加速度是速度/时间