我在SpriteKit周围打探,发现了一些奇怪的地方,我只是在iPhone上添加应该是全屏的矩形SKShapeNode。
override func didMoveToView(view: SKView) {
let _box = SKShapeNode(rectOfSize: self.frame.size)
_box.strokeColor = SKColor.blueColor()
_box.fillColor = SKColor.blueColor()
_box.position = CGPointMake(200, 200)
_box.name = "box"
self.addChild(_box)
let _player = SKShapeNode(circleOfRadius: 50)
_player.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
_player.fillColor = SKColor.redColor()
_player.strokeColor = SKColor.redColor()
_player.name = "player"
_player.physicsBody = SKPhysicsBody(circleOfRadius: 50)
_player.physicsBody?.dynamic = true
_player.physicsBody?.allowsRotation = false
self.addChild(_player)
let _ground = SKShapeNode(rectOfSize: CGSizeMake(self.frame.width, 20))
_ground.name = "ground"
_ground.position = CGPointMake(0, 0)
_ground.fillColor = SKColor.greenColor()
_ground.strokeColor = SKColor.greenColor()
_ground.physicsBody = SKPhysicsBody(rectangleOfSize: CGSizeMake(self.frame.width, 20))
_ground.physicsBody?.dynamic = false
self.addChild(_ground)
}我的视图是这样初始化的:覆盖func viewDidLoad() { super.viewDidLoad() }
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let scene = GameScene.unarchiveFromFile("GameScene") as? GameScene {
// Configure the view.
let skView = self.view as SKView
skView.showsFPS = true
skView.showsNodeCount = true
/* Sprite Kit applies additional optimizations to improve rendering performance */
skView.ignoresSiblingOrder = true
/* Set the scale mode to scale to fit the window */
scene.scaleMode = .AspectFill
skView.presentScene(scene)
}
}生成的场景如下:屏幕截图
所有节点都移到左侧底部。基本上,矩形形状的左下角超出了界限(我已经检查过,通过将蓝色形状定位为(200,200)而不是(0,0),左瓶边缘仍然超出了屏幕框架。
场景的锚点被设置为(0,0),所以它对我来说基本上是一样的,它为形状的中心点设置位置。
什么是定义节点左下角位置的最佳方法,而不是中点?
发布于 2014-11-05 16:46:56
如果使用bezier路径或CGPath创建形状,则可以指定其“锚点”的位置,其中路径的原点指定路径的下/左角。例如,
UIBezierPath* bezierPath = [UIBezierPath bezierPathWithRect: CGRectMake(0, 0, 50, 50)];
SKShapeNode *shape = [SKShapeNode node];
shape.path = bezierPath.CGPath;
shape.fillColor = [SKColor blueColor];此外,如果您的部署目标是iOS 8,则可以使用
SKShapeNode *shape = [SKShapeNode shapeNodeWithRect:CGRectMake(0, 0, 50, 50)];
shape.fillColor = [SKColor blueColor];发布于 2014-11-05 15:52:25
_box.position = CGPointMake(self.size.width*.5, self.size.height*.5)这将定位您的精灵的中心在屏幕的中心。
https://stackoverflow.com/questions/26761267
复制相似问题