【发布时间】:2014-05-28 17:27:58
【问题描述】:
我是 Sprite Kit 的新手,我正在尝试设置一个简单的游戏,让掉落的物体停留在屏幕范围内。但是,当我放下对象时,它并没有像应有的那样与屏幕边缘发生碰撞,而是直接掉了下来。
我设置了我的场景和它周围的边缘循环。
// Create and configure the scene.
SKScene * scene = [MyScene sceneWithSize:skView.bounds.size];
scene.scaleMode = SKSceneScaleModeAspectFill;
scene.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:scene.frame];
scene.physicsWorld.gravity = CGVectorMake(0.0, -9.8);
这就是我为精灵画出我的物理身体的地方,精灵会在我触摸到的任何地方掉落。
for (UITouch *touch in touches) {
CGPoint location = [touch locationInNode:self];
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:@"SObstacle.png"];
sprite.position = location;
CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x;
CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y;
CGMutablePathRef path = CGPathCreateMutable();
CGPathMoveToPoint(path, NULL, 50 - offsetX, 58 - offsetY);
CGPathAddLineToPoint(path, NULL, 0 - offsetX, 58 - offsetY);
CGPathAddLineToPoint(path, NULL, 0 - offsetX, 32 - offsetY);
CGPathAddLineToPoint(path, NULL, 24 - offsetX, 32 - offsetY);
CGPathAddLineToPoint(path, NULL, 24 - offsetX, -2 - offsetY);
CGPathAddLineToPoint(path, NULL, 80 - offsetX, -2 - offsetY);
CGPathAddLineToPoint(path, NULL, 80 - offsetX, 24 - offsetY);
CGPathAddLineToPoint(path, NULL, 50 - offsetX, 24 - offsetY);
CGPathAddLineToPoint(path, NULL, 50 - offsetX, 56 - offsetY);
CGPathCloseSubpath(path);
sprite.physicsBody = [SKPhysicsBody bodyWithPolygonFromPath:path];
[self addChild:sprite];
我已经用一个正方形的 SKSpriteNode 进行了尝试(我只使用了坐标而不是图像)并且效果很好。这可能只是一个新手错误,但我们感谢任何帮助。
【问题讨论】: