我想只在一个方向上进行SKSpritenode
扩展,在这种情况下只向上扩展。
override func didMoveToView(view: SKView) {
var rightlegs = SKSpriteNode()
rightlegs.size = CGSize(width: 10, height: 50)
rightlegs.color = SKColor.yellowColor()
rightlegs.position = CGPointMake(self.frame.width / 2 + 20, self.frame.height / 2 - 40)
self.addChild(rightlegs)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
/* Called when a touch begins */
所以..当我按下屏幕时,我希望高度扩大;但是,不是从两个方向。我该如何解决这个问题?感谢您的时间:)
答案 0 :(得分:1)
您可以通过将精灵的anchorPoint属性更改为CGPoint(x:0.5, y:0.0)
(这将使底部对齐精灵的纹理)并使用{{缩放精灵的高度 - 来实现此目的。 3}}属性,像这样:
import SpriteKit
class GameScene: SKScene, SKPhysicsContactDelegate {
let rightlegs = SKSpriteNode(color: .yellowColor(), size: CGSize(width: 10, height: 50))
override func didMoveToView(view: SKView) {
rightlegs.anchorPoint.y = 0.0
rightlegs.position = CGPointMake(self.frame.width / 2 + 20, self.frame.height / 2 - 40)
self.addChild(rightlegs)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//Without animation
rightlegs.yScale += 0.2
}
}
或者您可以使用一些SKAction缩放方法对其进行动画处理:
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
//With animation
rightlegs.runAction(SKAction.scaleYTo(rightlegs.yScale + 0.2, duration: 0.2))
}
关于anchorPoint
来自docs:
定义精灵中与节点对应的点 位置。
您可以在单位坐标空间中指定此属性的值。 默认值为(0.5,0.5),这意味着精灵是 以其立场为中心。
基本上anchorPoint
的作用是它定义了如何相对于节点的位置绘制纹理,并影响节点的旋转和缩放......
关于锚点如何工作及其作用的一个很好的解释可以在Apple的yScale部分文档中找到。