使用ccTouchesMoved方法移动CCCamera? (cocos2d,iphone) [英] Move CCCamera with the ccTouchesMoved method? (cocos2d,iphone)

查看:104
本文介绍了使用ccTouchesMoved方法移动CCCamera? (cocos2d,iphone)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

所以我得到这个工作:

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

(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的任何经验。



任何人都可以帮助我?



非常感谢
有一个愉快的一天



:)

解决方案>

这是我正在使用...这个移动相机的实现是我在cocos2d论坛上发现的。

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

(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)];

//获取摄像机的当前值。
float centerX,centerY,centerZ;
float eyeX,eyeY,eyeZ;
[self.camera centerX:& centerX centerY:& centerY centerZ:& centerZ];
[self.camera eyeX:& eyeX eyeY:& eyeY eyeZ:& eyeZ];

//根据当前缩放系数增加平移值。
diff.x = 2 * diff.x *(1+(eyeZ / 832));
diff.y = 2 * diff.y *(1+(eyeZ / 832));

//舍入值以避免子像素化。
int newX = centerX-round(diff.x);
int newY = centerY-round(diff.y);

//设置值。
[self.camera setCenterX:newX centerY:newY centerZ:0];
[self.camera setEyeX:newX eyeY:newY eyeZ:eyeZ];
}
}


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

:)

解决方案

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:&centerX centerY:&centerY centerZ:&centerZ];
        [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];
    }
}

这篇关于使用ccTouchesMoved方法移动CCCamera? (cocos2d,iphone)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆