我知道您以前可以通过以下方式完成:
<CCLayerObject>.isTouchEnabled = YES;
...与触摸调度员的注册相结合:
-(void)registerWithTouchDispatcher
{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0 swallowsTouches:YES];
}
...然后获得回调:
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint point = [self convertTouchToNodeSpace:touch];
NSLog(@"X:%ftY:%f", point.x, point.y);
}
但你在V3中需要做什么?
答案 0 :(得分:4)
看起来我所要做的就是:
在CCScene构造函数中,启用touches:
[self setUserInteractionEnabled:YES];
在以下位置添加touchBegan方法:
- (void)touchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
NSLog(@"touchBegan");
}
钽哒!在V3中比在V2中容易得多!
或者,也可以:
[self setMultipleTouchEnabled:YES];
答案 1 :(得分:3)
在Cocos2d 3.0中,任何CCNode都可以接收触摸。您需要做的就是启用触摸:
self.userInteractionEnabled = YES;
然后你有四种不同的方法来处理触摸:
touchBegan :在用户触摸屏幕时调用
<强> touchMoved:强>: 当用户将手指移到屏幕上时会被调用
touchEnded :在用户停止触摸屏幕时调用
touchCancelled :当用户仍在触摸屏幕时调用 但是其他一些问题阻止了您的Node处理触摸(例如, 触摸移动到节点的边界之外)
将触摸转换为节点空间的方式如下:
- (void)touchMoved:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchLocation = [touch locationInNode:self];
currentHero.position = touchLocation;
}
您可以在此触摸教程中阅读更多内容:https://makegameswith.us/gamernews/366/touch-handling-in-cocos2d-30