Ios 使用Swift在Xcode SpriteKit中沿一个方向扩展SKSpritenode

Ios 使用Swift在Xcode SpriteKit中沿一个方向扩展SKSpritenode,ios,sprite-kit,Ios,Sprite Kit,我想使一个SKSpritenode只在一个方向上展开,在本例中只向上展开 override func didMoveToView(view: SKView) { var rightlegs = SKSpriteNode() rightlegs.size = CGSize(width: 10, height: 50) rightlegs.color = SKColor.yellowColor() rightlegs.position = CGPointMake(se

我想使一个
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 */
覆盖func didMoveToView(视图:SKView){
var rightleegs=SKSpriteNode()
rightlegs.size=CGSize(宽:10,高:50)
rightleegs.color=SKColor.yellowColor()
rightlegs.position=CGPointMake(self.frame.width/2+20,self.frame.height/2-40)
self.addChild(右腿)
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
/*当触摸开始时调用*/

所以..当我按下屏幕时,我希望高度扩展;但是,不是从两个方向扩展。我如何解决这个问题?感谢您的时间:)

您可以通过将精灵的属性更改为
CGPoint(x:0.5,y:0.0)
(这将底部对齐精灵的纹理)并使用属性缩放精灵的高度,如下所示:

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
    }
}
导入SpriteKit
类游戏场景:SKScene,SKPhysicContactDelegate{
设rightlegs=SKSpriteNode(颜色:.yellowColor(),大小:CGSize(宽度:10,高度:50))
覆盖func didMoveToView(视图:SKView){
右腿.anchorPoint.y=0.0
rightlegs.position=CGPointMake(self.frame.width/2+20,self.frame.height/2-40)
self.addChild(右腿)
}
覆盖功能触摸开始(触摸:设置,withEvent事件:UIEvent?){
//没有动画
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))
}
覆盖函数触摸开始(触摸:设置,withEvent事件:UIEvent?){
//充满活力
rightlegs.runAction(SKAction.scaleYTo(rightlegs.yScale+0.2,持续时间:0.2))
}
关于文档中的
anchorPoint

定义精灵中与节点的位置相对应的点 位置

可以在单位坐标空间中指定此特性的值。 默认值为(0.5,0.5),这意味着精灵为 以它的位置为中心

基本上,
anchorPoint
的作用是定义如何相对于节点的位置绘制纹理,并影响节点的旋转和缩放


关于锚点的工作原理及其作用的详细说明,请参见Apple的文档部分。

这里只是一个想法。也许您可以尝试更新节点的大小,同时通过大小增加/2更改其位置。例如,将节点20px扩展到顶部:rightslegs.size=CGSize(宽度:10,高度:70);rightlegs.position=CGPointMake(rightlegs.position.width,rightlegs.position+10).Ooh也许可以。谢谢!我必须尝试一下。我可以将大小更改为SKAction吗?@heyfara也可以找到
anchorPoint
属性的很好解释。另外,值得一提的是,
anchorPoint
纯粹是视觉属性,不会影响节点的物理体(如果定义的话)。如果没有不同的定义(使用
bodyWithRectangleOfSize:center:
方法),默认情况下,节点的物理主体将保持在节点位置的中心。阅读详细信息