[ios]在一个方向,在 Xcode SpriteKit,使用扩展 SKSpritenodeSwift

标签: sprite-kit ios
发布时间: 2017/4/3 14:43:52
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我想要 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 */

苏。当我按屏幕时我想要的高度来展开;然而,不是从两个方向。如何解决这个问题?感谢您的时间:)

解决方法 1:

你可以通过更改anchorPoint属性,对Sprite CGPoint(x:0.5, y:0.0) (这将底部对齐Sprite的纹理) 和缩放Sprite的高度使用yScale属性,像这样︰

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 从文档︰

在对应于该节点的位置Sprite中定义的点。

你的单元坐标空间中指定此属性的值为。 默认值是 (0.5,0.5),这意味着Sprite在其位置上居中。

基本上什么 anchorPoint 确实是它定义了如何将相对于节点绘制纹理的位置和旋转和缩放的节点的影响......

很好地解释有关如何锚点作品和什么它确实可以找到苹果的工作与精灵节的文档中。

官方微信
官方QQ群
31647020