相关疑难解决方法(0)

SKPhysicsBody和[SKNode setScale:]

在我目前使用SpriteKit的项目中,我有一堆精灵需要在不同时间独立地放大和缩小.问题是当我缩放节点时,物理体不会随之缩放,因此它会破坏物理学.这是我为了这个问题而放在一起的一个小例子:

CGSize objectSize = CGSizeMake(100, 100);
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(0, 0, self.size.width, self.size.height)];

SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:objectSize];
n1.position = CGPointMake(self.size.width/2, 2*self.size.height/3);
n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:objectSize];
n1.physicsBody.affectedByGravity = YES;
[self addChild:n1];

SKSpriteNode *n2 = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:objectSize];
n2.position = CGPointMake(self.size.width/2, self.size.height/3);
n2.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:objectSize];
n2.physicsBody.affectedByGravity = YES;
[self addChild:n2];

[n1 setScale:0.5];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

注意蓝色精灵(按比例缩小)如何位于红色精灵之上,但你可以告诉它的物理体仍然具有我告诉它的尺寸,并且它没有缩放.

很明显,缩小节点不会缩小物理体.所以我的问题是如果我必须手动完成它,我该怎么做呢?

我尝试在缩放时用一个合适的尺寸交换身体,但是如果旧的身体有关节等,那么事情会变得非常复杂......如果我能以某种方式扩展现有的身体,那就简单多了.

ios7 sprite-kit

8
推荐指数
4
解决办法
5315
查看次数

在 Xcode Spritekit 中缩放物理体

我最近遇到了一个问题,我会增加节点的大小,但物理体的大小会保持不变。我试图寻找解决方案但没有成功。如何使身体与节点的大小成比例?

CGPoint location = CGPointMake(randX, -self.frame.size.height - expander.size.height);

SKAction *moveAction = [SKAction moveTo:location duration:randDuration];

SKAction *expandAction = [SKAction resizeToWidth:(expander.size.width * 1.4) height:(expander.size.width * 1.4) duration:1.0];

SKAction *collapseAction = [SKAction resizeToWidth:(expander.size.width) height: (expander.size.height) duration:1.0];

SKAction *doneAction = [SKAction runBlock:(dispatch_block_t)^() {
    expander.hidden = YES;
}];

SKAction *expandCollapseAction = [SKAction repeatActionForever:[SKAction sequence:@[expandAction, collapseAction]]];

SKAction *moveExpandAction = [SKAction group:@[moveAction, expandCollapseAction]];

SKAction *moveExpanderActionWithDone = [SKAction sequence: @[moveExpandAction, doneAction ]];
[expander runAction:moveExpanderActionWithDone withKey: @"expanderMoving"];
Run Code Online (Sandbox Code Playgroud)

objective-c ios sprite-kit

4
推荐指数
1
解决办法
613
查看次数

标签 统计

sprite-kit ×2

ios ×1

ios7 ×1

objective-c ×1