Bows rotates 360 Degree using touch and it fires arrow while touch ended.
Moving portion works perfectly but their need some correction while touch endes..
The problem is while i touch the bow,moving direction of arrow is opposite to bow such as

当我向相反的方向旋转弓时,它工作得很好,但只有当弓旋转的时候..箭头应该从右向左发射,弓的位置应该是右的。
我应该怎么做才能让它们在一起成为可能?!对不起,我的英语..
我的代码如下:
-(void) ccTouchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
[self setArrowFromPt:location centerPt:windowCenter];
}
-(void) setArrowFromPt:(CGPoint)touchPt centerPt:(CGPoint)centerPt
{
diff = ccpSub(touchPt, centerPt);
NSLog(@"%@", NSStringFromCGPoint(diff));
angle = ccpToAngle(diff);
normalized = ccpNormalize(diff);
float START_ANGLE = 0;
float RADIUS = 100.0;
imgArrow.position = ccpAdd(centerPt, ccpMult(normalized, RADIUS));
cocosAngle = -CC_RADIANS_TO_DEGREES(angle);
imgArrow.rotation = START_ANGLE + cocosAngle;
}
-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];
cocosAngle = -CC_RADIANS_TO_DEGREES(angle);
curangle = imgArrow.rotation;
CGFloat rotateDiff = cocosAngle - curangle;
CGFloat rotateSpeed = 180;
rotateDuration = fabs(rotateDiff / rotateSpeed);
if (_nextProjectile != nil) return;
_nextProjectile = [[CCSprite spriteWithFile:@"newarrow.png"] retain];
_nextProjectile.anchorPoint = ccp(0,0);
_nextProjectile.position = ccp(380,150);
[imgArrow runAction:[CCSequence actions:
[CCRotateTo actionWithDuration:rotateDuration angle:cocosAngle],
[CCCallFunc actionWithTarget:self selector:@selector(finishShoot)],
nil]];
ccTime delta = 1.0;
CGPoint normalizedShootVector = ccpNormalize(diff);
CGPoint overshotVector = ccpMult(normalizedShootVector, 420);
CGPoint offscreenPoint = ccpAdd(_nextProjectile.position, overshotVector);
[_nextProjectile runAction:[CCSequence actions:
[CCMoveTo actionWithDuration:delta position:offscreenPoint],
[CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)],
nil]];
_nextProjectile.tag = 2;
}任何帮助都是非常感谢的。提前感谢!!
发布于 2013-04-13 21:22:15
因为我可以回答我的问题,
我已经通过纠正错误解决了我的问题
CGPoint overshotVector = ccpMult(normalizedShootVector,-420);
putting sign,使我的箭头从右向左抛出。
https://stackoverflow.com/questions/15986750
复制相似问题