gpt4 book ai didi

ios7 - SKPhysicsBody和[SKNode setScale :]

转载 作者:行者123 更新时间:2023-12-04 05:12:45 26 4
gpt4 key购买 nike

在我当前使用SpriteKit的项目中,我有一堆需要在不同时间分别放大和缩小的Sprite。问题在于,当我缩放节点时,物理主体不会随之缩放,因此会破坏物理状态。这是我为解决这个问题而编写的一个小示例:

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];

请注意,蓝色小 Sprite (按比例缩小)如何位于红色小 Sprite 的顶部,但是您可以知道它的物理体仍然具有我告诉过的尺寸,并且没有按比例缩放。

因此很明显,按比例缩小节点不会按比例缩小PhysicalBody。所以我的问题是,如果我必须手动执行此操作,该如何处理?

我尝试在缩放时将 body 换成合适的尺寸之一,但是如果旧的 body 有关节等,事情就会变得很复杂。如果我能以某种方式缩放现有的 body ,这会变得简单得多。

最佳答案

使用SKAction或Update循环,您可以创建一个具有适当比例的新SKPhysicsBody并将其应用于对象。但是,这样做将失去速度。要解决此问题,您可以执行以下操作:

SKPhysicsBody *newBody = [SKPhysicsBody bodyWithRectangleOfSize:boxObject.size];
newBody.velocity = boxObject.physicsBody.velocity;

boxObject.physicsBody = newBody;

关于ios7 - SKPhysicsBody和[SKNode setScale :],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19305653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com