私は
は最初、私がターゲットとセンター との間の距離(d)を取得する必要がある答えを得るためにどのようになったいくつかの調査の後中心から標的までの弾丸の時間。 (D)船が円に沿って移動しているので、半径も距離と等しくされているので
CGFloat timeToArriveTarget = bullet.speed/distance;
CGFloat angularSpeed = bullet.speed/distance;
角度を探すには、この期間
CGFloat angle = angularSpeed * timeToArriveTarget;
CGFloat x = self.target.position.x;
CGFloat y = self.target.position.y;
CGFloat a = bullet.node.position.x;
CGFloat b = bullet.node.position.y;
、最終的に次の式を使用して内で移動しました: 詳細はgetVelocity機能が
で与えられる
https://math.stackexchange.com/a/266837
CGPoint targetPt = CGPointMake((x - a) * cos(angle) - (y - b) * sin(angle) + a, (x - a) * sin(angle) + (y - b) * cos(angle) + b);
bullet.node.physicsBody.velocity = [ActionHelper getVelocityFrom:bullet.node.position toPtB:targetPt speed:bullet.speed];
このリンクによって与えています
+(CGVector)getVelocityFrom:(CGPoint)ptA toPtB:(CGPoint)ptB speed:(CGFloat)speed{
CGPoint targetPosition = ptB;
CGPoint currentPosition = ptA;
double angle = [MathHelper getRotateAngleFrom:currentPosition toTargetPosition:targetPosition];
double velocityX = speed * cos(angle);
double velocityY = speed * sin(angle);
CGVector newVelocty = CGVectorMake(velocityX, velocityY);
return newVelocty;
}
2つの物体が衝突する時に、あなたが軌道を計算するために探しているように、あなたはどの時点で把握する必要があり、私に聞こえ、それはいくつかの数学を必要とします – Knight0fDragon