我正在尝试在花栗鼠中创建一个不断增长的圈子,当你触摸并将手指放在某个位置时,它会开始增长。我没有在花栗鼠中找到任何具体的帮助功能,想知道是否有人有任何建议,提示或技巧如何做到这一点。
一种方法是创建一个比前一个更大的圆圈,并在每个更新圆圈中销毁旧圆圈。也许有一种更简单的方式,任何人都有任何想法?
由于
更新: 目前我使用以下方法:
在我的actionLayer类中:
-(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),所以我猜这个解决方案还可以。
答案 0 :(得分:0)
https://github.com/slembcke/Chipmunk-Physics/blob/master/include/chipmunk/chipmunk_unsafe.h
您必须单独导入此标题,因为我通常不鼓励人们使用它。确保你明白,花栗鼠无法理解表面是如何移动或改变的,因此碰撞会变得糊涂。