我在编码方面遇到麻烦,使得特定精灵在阵列之间移动....
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView: [myTouch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
CCSprite*grade=[grades lastObject];
[grade runAction:[CCMoveTo actionWithDuration:3 position:location]];
}
阵列移动的最后一个对象..
你能帮我修改一下代码来触摸数组中的特定精灵,并且可以用ccTouchesMove
方法进行移动。
P.S。我只使用cocos2d,而不是box2d。
答案 0 :(得分:0)
-(void)ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch* myTouch = [touches anyObject];
CGPoint location = [myTouch locationInView: [myTouch view]];
location = [[CCDirector sharedDirector]convertToGL:location];
for (CCSprite *grade in grades) {
if (CGRectContainsPoint(grade.boundingBox, location)) {
[grade runAction:[CCMoveTo actionWithDuration:3 position:location]];
}
}
}
CGRectContainsPoint
将检查触摸的位置是否在给定的rect内。所以我做的是迭代你的sprite数组和sprite,其中位置在他们的矩形(边界框)内,而不是移动该sprite。如果您只希望移动第一个触摸的精灵,可以在if
语句中添加一个中断。