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:
方法),默认情况下,节点的物理主体将保持在节点位置的中心。阅读详细信息