gpt4 book ai didi

objective-c - SKPhysicsBody 不符合预期

转载 作者:搜寻专家 更新时间:2023-10-30 20:02:42 25 4
gpt4 key购买 nike

我有以下代码来创建一个矩形砖 block 和一个与之关联的物理体。我希望物理体是一个与砖 block 大小和位置相同的实心矩形,但我得到的是一个我认为有位置偏移并且可能还有尺寸差异的物体。我错过的坐标系有问题吗?处理这个问题的正确方法是什么?

- (void)addBrick {
SKShapeNode *brick = [[SKShapeNode alloc] init];

CGRect brickBoundary = CGRectMake(0.0, 0.0, 100.0, 100.0);
brick.position = CGPointMake(100.0, 100.0);
brick.path = CGPathCreateWithRect(brickBoundary, nil);

brick.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:CGSizeMake(100.0,100.0)];
brick.physicsBody.restitution = 1.0;
brick.physicsBody.friction = 0.0;
brick.physicsBody.dynamic = NO;

[self addChild:brick];
}

最佳答案

这是创建矩形并向其添加物理体的简单方法。

SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:objectSize];
n1.position = CGPointMake(self.size.width/2, 200);
n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:n1.size];
n1.physicsBody.dynamic = NO;
[self addChild:n1];

这是来自 RW 的修改版本为您提供调试矩形的教程

// RW Debug modified version
CGPathRef bodyPath = CGPathCreateWithRect( CGRectMake(-n1.size.width/2, -n1.size.height/2, n1.size.width, n1.size.height),nil);
SKShapeNode *shape = [SKShapeNode node];
shape.path = bodyPath;
shape.strokeColor = [SKColor colorWithRed:1.0 green:0 blue:0 alpha:0.5];
shape.lineWidth = 1.0;
[n1 addChild:shape];
CGPathRelease(bodyPath);

你的实现产生了这个(红色是物理框)。

enter image description here

关于objective-c - SKPhysicsBody 不符合预期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19396279/

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