首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拍摄方向不当cocos2D-iPhone

拍摄方向不当cocos2D-iPhone
EN

Stack Overflow用户
提问于 2013-04-13 18:20:18
回答 1查看 344关注 0票数 1
代码语言:javascript
复制
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 

当我向相反的方向旋转弓时,它工作得很好,但只有当弓旋转的时候..箭头应该从右向左发射,弓的位置应该是右的。

我应该怎么做才能让它们在一起成为可能?!对不起,我的英语..

我的代码如下:

代码语言:javascript
复制
-(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;

}

任何帮助都是非常感谢的。提前感谢!!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-13 21:22:15

因为我可以回答我的问题,

我已经通过纠正错误解决了我的问题

CGPoint overshotVector = ccpMult(normalizedShootVector,-420);

putting sign,使我的箭头从右向左抛出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15986750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档