使用 ccTouchesMoved 方法移动 CCCamera? (cocos2d、iPhone)

发布于 2024-10-22 04:48:36 字数 906 浏览 3 评论 0原文

所以我得到了这个工作:

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

        for( UITouch *touch in touches ) {
            CGPoint touchLocation = [touch locationInView: [touch view]];   
            CGPoint prevLocation = [touch previousLocationInView: [touch view]];    

            touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
            prevLocation = [[CCDirector sharedDirector] convertToGL: prevLocation];

            CGPoint diff = ccpSub(touchLocation,prevLocation);
            [self setPosition: ccpAdd(self.position, diff)];
        }
}

我可以用手指移动图层,但我想移动 cccamera,但我没有任何 cccamera 的经验。

谁能帮助我吗?

非常感谢 祝你今天过得愉快

:)

so I got this working:

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

        for( UITouch *touch in touches ) {
            CGPoint touchLocation = [touch locationInView: [touch view]];   
            CGPoint prevLocation = [touch previousLocationInView: [touch view]];    

            touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
            prevLocation = [[CCDirector sharedDirector] convertToGL: prevLocation];

            CGPoint diff = ccpSub(touchLocation,prevLocation);
            [self setPosition: ccpAdd(self.position, diff)];
        }
}

I can move the layer with my finger BUT i want to move the cccamera but i don't have any experience with cccamera.

Can anyone help me?

Thank you very much
Have a nice day

:)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

错爱 2024-10-29 04:48:36

这就是我正在使用的...这种移动相机的实现是我在 cocos2d 论坛上找到的。

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

    for( UITouch *touch in touches ) {
        CGPoint touchLocation = [touch locationInView: [touch view]];   
        CGPoint prevLocation = [touch previousLocationInView: [touch view]];    

        touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
        prevLocation = [[CCDirector sharedDirector] convertToGL: prevLocation];

        CGPoint diff = ccpSub(touchLocation,prevLocation);
        [self setPosition: ccpAdd(self.position, diff)];

        // Get the camera's current values.
        float centerX, centerY, centerZ;
        float eyeX, eyeY, eyeZ;
        [self.camera centerX:¢erX centerY:¢erY centerZ:¢erZ];
        [self.camera eyeX:&eyeX eyeY:&eyeY eyeZ:&eyeZ];

        // Increment panning value based on current zoom factor.
        diff.x = 2 * diff.x * (1+(eyeZ/832));
        diff.y = 2 * diff.y * (1+(eyeZ/832));

        // Round values to avoid subpixeling.
        int newX = centerX-round(diff.x);
        int newY = centerY-round(diff.y);

        // Set values.
        [self.camera setCenterX:newX centerY:newY centerZ:0];
        [self.camera setEyeX:newX eyeY:newY eyeZ:eyeZ];
    }
}

Here's what I'm using... this implementation of moving the camera is something I found on the cocos2d forums.

-(void) ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    UITouch *myTouch = [touches anyObject];
    CGPoint location = [myTouch locationInView:[myTouch view]];
    location = [[CCDirector sharedDirector] convertToGL:location];

    for( UITouch *touch in touches ) {
        CGPoint touchLocation = [touch locationInView: [touch view]];   
        CGPoint prevLocation = [touch previousLocationInView: [touch view]];    

        touchLocation = [[CCDirector sharedDirector] convertToGL: touchLocation];
        prevLocation = [[CCDirector sharedDirector] convertToGL: prevLocation];

        CGPoint diff = ccpSub(touchLocation,prevLocation);
        [self setPosition: ccpAdd(self.position, diff)];

        // Get the camera's current values.
        float centerX, centerY, centerZ;
        float eyeX, eyeY, eyeZ;
        [self.camera centerX:¢erX centerY:¢erY centerZ:¢erZ];
        [self.camera eyeX:&eyeX eyeY:&eyeY eyeZ:&eyeZ];

        // Increment panning value based on current zoom factor.
        diff.x = 2 * diff.x * (1+(eyeZ/832));
        diff.y = 2 * diff.y * (1+(eyeZ/832));

        // Round values to avoid subpixeling.
        int newX = centerX-round(diff.x);
        int newY = centerY-round(diff.y);

        // Set values.
        [self.camera setCenterX:newX centerY:newY centerZ:0];
        [self.camera setEyeX:newX eyeY:newY eyeZ:eyeZ];
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文