objective c - SKShapeNode Positioning -
objective c - SKShapeNode Positioning -
i'm poking around spritekit , encountered weirdness i.e i'm adding rectangular skshapenode
that should fullscreen on iphone
override func didmovetoview(view: skview) { allow _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) allow _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) allow _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) }
my views initialised way override func viewdidload() { super.viewdidload() }
override func viewwilllayoutsubviews() { super.viewwilllayoutsubviews() if allow scene = gamescene.unarchivefromfile("gamescene") as? gamescene { // configure view. allow skview = self.view skview skview.showsfps = true skview.showsnodecount = true /* sprite kit applies additional optimizations improve rendering performance */ skview.ignoressiblingorder = true /* set scale mode scale fit window */ scene.scalemode = .aspectfill skview.presentscene(scene) } }
the resulting scene looks so: screenshot
all nodes shifted left-bottom. left-bottom corner of rectangular shapes out of bounds (i've checked positioning bluish shape (200, 200) instead of (0, 0) - , left-bottome edges still out of screen frame.
anchor point scene set (0, 0) looks me, sets position central point of shape.
what best way define position of left-bottom corner of node, instead of mid-point?
if create shape using bezier path or cgpath, can specify position of "anchor point," path's origin specifies bottom/left corner of path. example,
uibezierpath* bezierpath = [uibezierpath bezierpathwithrect: cgrectmake(0, 0, 50, 50)]; skshapenode *shape = [skshapenode node]; shape.path = bezierpath.cgpath; shape.fillcolor = [skcolor bluecolor];
also, if deployment target ios 8, can create shape node with
skshapenode *shape = [skshapenode shapenodewithrect:cgrectmake(0, 0, 50, 50)]; shape.fillcolor = [skcolor bluecolor];
objective-c swift sprite-kit skspritenode skshapenode
Comments
Post a Comment