gpt4 book ai didi

ios - 在 Xcode SpriteKit 中,使用 Swift 在一个方向上展开 SKSpritenode

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:07:32 25 4
gpt4 key购买 nike

我想让一个 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 */

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

最佳答案

您可以通过更改 anchorPoint 来实现将 Sprite 的属性设置为 CGPoint(x:0.5, y:0.0)(这将使 Sprite 的纹理底部对齐)并使用 yScale 缩放 Sprite 的高度属性(property),像这样:

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:

Defines the point in the sprite that corresponds to the node’s position.

You specify the value for this property in the unit coordinate space. The default value is (0.5,0.5), which means that the sprite is centered on its position.

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

Apple 的 Working with Sprites 中可以找到关于 anchor 如何工作及其作用的很好的解释。文档部分。

关于ios - 在 Xcode SpriteKit 中,使用 Swift 在一个方向上展开 SKSpritenode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36218198/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com