Objective c cocos2d和花栗鼠的生长圈
我试图在花栗鼠身上创造一个成长的圆圈,当你触摸并握住手指的某个位置时,它就会开始成长。我还没有在花栗鼠身上找到任何具体的帮助功能,不知道是否有人对如何做到这一点有任何建议、提示或窍门 一种方法是创建一个比前一个稍大一点的圆,并在每次更新圆时销毁旧的圆。也许有更简单的方法,有人有什么想法吗 谢谢 更新: 目前,我正在使用以下方法: 在我的actionLayer类中:Objective c cocos2d和花栗鼠的生长圈,objective-c,cocos2d-iphone,chipmunk,Objective C,Cocos2d Iphone,Chipmunk,我试图在花栗鼠身上创造一个成长的圆圈,当你触摸并握住手指的某个位置时,它就会开始成长。我还没有在花栗鼠身上找到任何具体的帮助功能,不知道是否有人对如何做到这一点有任何建议、提示或窍门 一种方法是创建一个比前一个稍大一点的圆,并在每次更新圆时销毁旧的圆。也许有更简单的方法,有人有什么想法吗 谢谢 更新: 目前,我正在使用以下方法: 在我的actionLayer类中: -(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event {
-(BOOL) ccTouchBegan:(UITouch *)touch withEvent:(UIEvent *)event
{
CGPoint touchLocation = [touch locationInView: [touch view]];
CGPoint circleOrigin = [[CCDirector sharedDirector] convertToGL: touchLocation];
spriteObject = [[[CPHatchimal alloc] initWithSpace:space atLocation:circleOrigin] autorelease];
[sceneSpriteBatchNode addChild:spriteObject z:2];
return YES;
}
-(void) ccTouchEnded:(UITouch *)touch withEvent:(UIEvent *)event
{
[spriteObject setGrowCircle:NO];
}
在我的spriteObject类中:
-(void) update:(ccTime)deltaTime {
if (growCircle) {
CGPoint location = ccp(circleOrigin.x, circleOrigin.y);
cpFloat r = ((cpCircleShape*) shape)->r;
r++;
NSString *spritName = [self getCurrentSpriteName];
[self setDisplayFrame:[[CCSpriteFrameCache sharedSpriteFrameCache]
spriteFrameByName:spritName]];
[self setScale:(0.01 * r)];
cpSpaceRemoveStaticShape(space, shape);
cpShapeFree(shape);
body = cpBodyNewStatic();
body->p = location;
shape = cpCircleShapeNew(body, radius, cpvzero);
shape->e = e;
shape->u = u;
shape->collision_type = collisionType;
shape->data = self;
cpSpaceAddStaticShape(space, shape);
}
}
目前我有相当好的fps约60,所以我想这个解决方案是好的
您必须单独导入此标题,因为我通常不鼓励人们使用它。请确保您了解花栗鼠无法了解曲面是如何移动或变化的,因此碰撞将变得模糊。您的方式将导致CPU过载。但是你可以利用通常的圆形精灵,当它被触摸时,你可以放大它。现在的问题是,你想把它放大多少?谢谢你的回复!我刚刚尝试了你的解决方案,但身体的边缘没有与形状一起缩放,这意味着接触点将关闭。我恢复到我原来的解决方案,性能损失并没有那么严重。