我正在使用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度添加到负角),但得出的端点相同。

谁能帮忙或给我一些尝试的机会?

谢谢!

最佳答案

cos()sin()函数都从弧度输入返回一个值。您要使用CC_RADIANS_TO_DEGREES对其进行修复。

关于iphone - 角度导致怪异的路径,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12681581/

10-14 00:47