我被困在試圖讓我的精靈觸摸方法受控制的日子裏。我的目標是讓另一個精靈彈出偏移到一個被觸摸的精靈。Cocos2D - 觸摸CCSprite後彈出
我目前有一個這個過程的一個半熟的代碼,其中我已經嘗試了許多不同的代碼,請參閱下面的鏈接,其中沒有任何工作。我的問題:
- 獲取CCTouch開始運行方法towerPositionTapped一旦觸摸屏幕上的精靈(NSLog在CCTouchBegan也不工作)。
- 瞭解如何獲取觸摸的精靈的位置,以便它可以在towerPositionTapped方法中使用。
我觸摸特定代碼在主層至今:
-(void) registerWithTouchDispatcher{
[[[CCDirector sharedDirector] touchDispatcher] addTargetedDelegate:self priority:0
swallowsTouches:YES];
}
-(BOOL)ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event{
CGPoint location = [touch locationInView: [touch view]];
location = [[CCDirector sharedDirector] convertToGL: location];
//_towersFromClass is an NSMutableArray with CCSprite objects
for(CCSprite *tb in _towersFromClass){
if(CGRectContainsPoint(tb.boundingBox,location)){
NSLog(@"sprite touched at %@", NSStringFromCGPoint(location));
[self towerPositionTapped]
return YES;
}
}
return NO;
}
的NSLog的檢查沒有結束顯示,當我點擊任何精靈。
對於towerPositionTapped方法我不確定如何捕捉觸摸的位置(或記錄觸摸的精靈)以便定位新的精靈。
towerPositionTapped.m
-(void)towerPositionTapped{
CCMenuItem *towerOption1 = [CCMenuItemImage itemWithNormalImage:@"tower.png" selectedImage:@"tower.png"];
towerOption1.position = /* place touched sprite location here, with an offset*/;
CCMenu *_towerOptionsMenu = [CCMenu menuWithItems: nil];
_towerOptionsMenu.position = CGPointZero;
[self addChild:_towerOptionsMenu z:5];
}
任何建設性的批評是表示讚賞。感謝您的時間。
一些網站我一直在測試的:
你ccTouchBegan工作嗎?如果你把CClog放在for循環中,cclog會顯示什麼? – Zohaib