在cocos2d中绑定一个sprite

Sri*_*vas 7 iphone objective-c cocos2d-iphone

正在制作一个用于射击物体的正典.柱塞的背面是柱塞的附件.柱塞用于设定速度和角度.佳能旋转0-90度,柱塞前后移动,调节速度.当我通过触摸旋转佳能时,其工作正常.当柱塞通过移动而被拉回并且其旋转意味着柱塞被束缚在佳能之外.

如何控制这个: -

移动时我的柱塞和佳能旋转代码.(para3是佳能,para6是我的柱塞): -

    CGPoint touchLocation = [self convertTouchToNodeSpace:touch];
    CGPoint oldTouchLocation = [touch previousLocationInView:touch.view];
    oldTouchLocation = [[CCDirector sharedDirector] convertToGL:oldTouchLocation];
    oldTouchLocation = [self convertToNodeSpace:oldTouchLocation];
    if (CGRectContainsPoint(CGRectMake(para6.position.x-para6.contentSize.width/2, para6.position.y-para6.contentSize.height/2, para6.contentSize.width, para6.contentSize.height), touchLocation) && (touchLocation.y-oldTouchLocation.y == 0))
    {
        CGPoint diff = ccpSub(touchLocation, oldTouchLocation);
        CGPoint currentpos = [para6 position];
        NSLog(@"%d",currentpos);
        CGPoint destination = ccpAdd(currentpos, diff);
        if (destination.x < 90 && destination.x >70)
        {
            [para6 setPosition:destination];
            speed = (70 + (90-destination.x))*3.5 ;
        }

    }
if(CGRectIntersectsRect((CGRectMake(para6.position.x-para6.contentSize.width/8, (para6.position.y+30)-para6.contentSize.height/10, para6.contentSize.width, para6.contentSize.height/10)),(CGRectMake(para3.position.x-para3.contentSize.width/2, para3.position.y-para3.contentSize.height/2, para3.contentSize.width, para3.contentSize.height))))

            {

        [para3 runAction:[CCSequence actions:
                          [CCRotateTo actionWithDuration:rotateDuration angle:rotateDiff],
                          nil]];
        CGFloat plungrot = (rotateDiff);
        CCRotateTo *rot = [CCRotateTo actionWithDuration:rotateDuration angle:plungrot];
        [para6 runAction:rot];
    }
}
Run Code Online (Sandbox Code Playgroud)

小智 2

您使用 [CCMoveTo actionWithDuration:position:] 方法来执行此操作怎么样?

通过这种方法,您可以通过“actionWithDuration”参数轻松控制速度,该参数采用以秒为单位的整数时间值,而方向可以通过“position”参数调整,该参数采用 ccp(x,y) 作为您想要的点的值您要移动到的柱塞。

你可以像这样使用它......

    CCSprite *plunger = [[CCSprite alloc] initWithFile:@"plunger.png"];
    plunger.position = ccp(240,240);
    [self addChild:plunger z:10];
    [plunger release];

    id = [CCMoveTo actionWithDuration:3 position:ccp(300,240)];
Run Code Online (Sandbox Code Playgroud)

给出的值是我选择的。您可以根据自己的喜好使用它们。

希望对你有帮助......