使用ccTouchesMoved方法移动CCCamera? (cocos2d,iphone) [英] Move CCCamera with the ccTouchesMoved method? (cocos2d,iphone)
本文介绍了使用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:¢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];
}
}
这篇关于使用ccTouchesMoved方法移动CCCamera? (cocos2d,iphone)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文