私はcocos2dを使用してゲームを作成しており、敵の現在の位置から特定の長さの角度でショットパスを作成しようとしています。
これが私が銃を回転させて撃つために使用しているコードです。
gun runAction: [CCSequence actions: [CCDelayTime actionWithDuration:2.0],
[CCCallBlockN actionWithBlock:^(CCNode *node)
{ [self shootEnemyLaserFromPositionAtAngle:gun];}],
[CCRotateTo actionWithDuration:0.5 angle:250],
[CCCallBlockN actionWithBlock:^(CCNode *node)
{ [self shootEnemyLaserFromPositionAtAngle:gun];}],
[CCRotateTo actionWithDuration:0.5 angle:230],
[CCCallBlockN actionWithBlock:^(CCNode *node)
私はこの方程式を使用してベクトルを計算しています(このコードはshootEnemyLaserFromPositionAtAngleにあります):
CGPoint endPoint = CGPointMake(gun.position.x + (800 * cos(gun.rotation)), gun.position.y + (800 * sin(gun.rotation)));
NSLog(@"end Point x: %f, %f", endPoint.x, endPoint.y);
shipLaser.position = gun.position;
CGPoint shootVector = ccpNormalize(ccpSub(endPoint, shipLaser.position));
CGPoint shootTarget = ccpMult(shootVector, _winSize.width*2);
[shipLaser runAction:[CCSequence actions: [CCMoveBy actionWithDuration:4.0 position:shootTarget],
[CCCallFuncN actionWithTarget:self selector:@selector(invisNode:)], nil]];
私の問題は、それが奇妙な方向に飛び散ってしまうことです。私のendPoint値はそのように出力されます。以下に銃の回転角度も印刷しました。
angle: -90.000000
end Point x: 21.541107, -499.593536
angle: -110.000000
end Point x: -419.216644, 250.997940
angle: -130.000000
end Point x: 86.166939, 959.688538
角度が突然負になっていることに気づきました。正の角度に変更してみました(負の角度に360を追加)が、同じエンドポイントになりました。
誰かが私に何か試してみるのを手伝ったりくれたりできますか?
ありがとう!