导致奇怪路径的角度

时间:2012-10-01 21:45:38

标签: iphone ios math cocos2d-iphone

我正在使用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),但这会产生相同的终点。

任何人都可以帮忙或给我一些尝试吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

cos()sin()函数都返回弧度输入的值。您想使用CC_RADIANS_TO_DEGREES来修复它。

答案 1 :(得分:1)

如果试图找到正弦或余弦,则需要将gun.rotation从度数转换为弧度。使用float gunRotation = CC_DEGREES_TO_RADIANS(gun.rotation);(或double)并将其传递给三角函数。当然,潜伏在这些片段之外的其他问题也是如此,如果您发现其他相关问题,请更新问题。