2016-03-25 17 views
2

SKSpritenodeを一方向(この場合は上向き)にのみ展開したいと考えています。Swiftを使用して、一方向、Xcode SpriteKitで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

ここにちょっとしたアイデアがあります。おそらく、あなたのノードのサイズを更新しながらsizeIncrease/2で位置を変更しようとするかもしれません。たとえば、ノード20pxを上に展開するには:rightlegs.size = CGSize(width:10、height:70); rightlegs.position = CGPointMake(rightlegs.position.width、rightlegs.position + 10)。 – Heyfara

+0

多分それはありがとうございました!、私はそれを試してみる必要があります。サイズをSKActionとして変更することはできますか?@Heyfara – David

答えて

1

あなたはこのように、yScaleプロパティを使用して(この意志ボトム整列スプライトのテクスチャ)CGPoint(x:0.5, y:0.0)にスプライトのanchorPointプロパティを変更すると、スプライトの高さをスケーリングすることにより、それを行うことができます。

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

スプライト内のノードの 位置に対応するポイントを定義します。

このプロパティの値は、単位座標空間で指定します。 デフォルト値は(0.5,0.5)です。これは、スプライトがその位置を中心に であることを意味します。基本的には

anchorPointはありませんが、それはテクスチャが、ノードの位置に相対して描画される方法を定義することで、ノードの回転やスケーリングに影響を与える...

アンカーポイントがどのように機能するかについての良い説明とそれAppleのWorking with Spritesのドキュメントのセクションに記載されています。

+0

'anchorPoint'プロパティについては、こちらをご覧ください(http://www.thinkingswiftly.com/anchorpoint-skspritenode-spritekit-swift/)。また、 'anchorPoint'は純粋に視覚的なプロパティであり、ノードの物理ボディ(定義されている場合)に影響しないことに言及する価値があります。ノードの物理ボディは、(bodyWithRectangleOfSize:center: 'メソッドを使用して)別途定義されていなければ、ノードの位置にデフォルトで中央に置かれたままになります。続きを読む[ここ](http://stackoverflow.com/questions/22095389/sprite-kit-change-anchorpoint-but-keep-physicsbody-centered) – Whirlwind

関連する問題