草庐IT

SkSpriteNode

全部标签

swift - 使用奇怪形状的图像运行动画检测 SKSpriteNode 上的触摸

将SpriteKit用于iOS9.0应用程序/游戏(没有物理体)。我在一个场景中有几个SpriteNode。SpriteNodes带有奇形怪状的图像,并贯穿多帧动画。检测对SpriteNode图像内容的触摸,而不是整个图像矩形的透明区域的最佳方法是什么。我看到很多关于使用SKCropNode/MaskImage的帖子。在我的场景中,我为动画的每个SpriteNode设置了多个图像/帧。请就方法提出建议或为我指明正确的方向。谢谢。 最佳答案 基于以上评论的附加信息:在16帧中只有16种形状的情况下,一种更有效的方法是在每一帧绘制大致近

swift - 在 spritekit 中随机化不同的敌人向玩家移动

我想知道是否有人可以回答我的问题。我在Sprite-kit中使用纹理图集创建了3种不同的敌人动画,我想知道是否有一种方法可以在游戏开始后立即随机选择一个敌人向玩家移动。TextureAtlas=SKTextureAtlas(named:"zombies.atlas")foriin1...TextureAtlas.textureNames.count{letZ="z\(i).png"zombieArray.append(SKTexture(imageNamed:Z))}TextureAtlas=SKTextureAtlas(named:"baldzomb.atlas")foriin1..

swift - 以编程方式使用 Assets 创建 SKSpriteNode

我正在尝试以编程方式创建一个SKSpriteNode并在我的Assets.xcassets文件夹中为其提供纹理。我认为这将是一个基本程序,但我似乎遇到了很多麻烦。作为引用,这是我的Assets目录,其中包含我试图设置为SKSpriteNode的地面Assets:这是制作Sprite节点的代码:sprite.texture=SKTexture(image:UIImage(named:spriteName)!)sprite.anchorPoint=CGPoint(x:0,y:1)sprite.position=CGPoint(x:0,y:0)referenceNode.addChild(s

swift - Sprite 节点的起始位置

我正在使用以下代码使Sprite节点在Xcodespritekit中绕圈移动。letcircleDiameter=CGFloat(100)//centerourpathbasedonourspritesinitialpositionletpathCenterPoint=CGPoint(x:object.position.x-circleDiameter,y:object.position.y-circleDiameter/2)//createthepathourspritewilltravelalongletcirclePath=CGPath(ellipseIn:CGRect(orig

ios - 如何将 SKSpriteNode 保存为 PNG 图像到相机胶卷?

我正在尝试将SKSpriteNode转换为具有透明度的PNG图像到相机胶卷。这会保存图像但不透明:letimage=UIImage(cgImage:(spriteNode.texture?.cgImage())!)UIImageWriteToSavedPhotosAlbum(image,nil,nil,nil)这提示:Cannotconvertvalueoftype'Data?'toexpectedargumenttype'UIImage'letimage=UIImage(cgImage:(createdCloudShadow.texture?.cgImage())!)letimage

swift - 无法更改 SKSpriteNode 的纹理

在我的游戏中,我正在创建一个具有特定纹理的Circle对象,但是例如,如果Circle撞到某堵墙,我希望它的纹理发生变化。不幸的是,由于某种原因这不起作用,我不知道为什么。这是我的Circle类代码:classCircle:SKNode,GKAgentDelegate{lettxtName="farblos"varnode:SKSpriteNode{letnode=SKSpriteNode(imageNamed:txtName)node.size=CGSize(width:30,height:30)node.name="circle"returnnode}letagent:GKAgen

swift - 为什么覆盖我的 SKSpriteNode 子类的位置变量会减慢速度?

在Scratch有一个很酷的函数叫做penDown这会导致您的Sprite在从A移动到B时在屏幕上描绘一条某种颜色的线。我想通过子类化SKSpriteNode来重新创建此行为。并在职位发生变化时收到通知。然而,这个简单的覆盖导致整个事情变慢了很多(只有两个Sprite时FPS从20下降到7):overridevarposition:CGPoint{get{returnsuper.position}set{super.position=newValue//AddthisnewpointtothebezierpathofthelinesothatIcantraceit.}}为什么会这样?

快速 SKSprite 从一个 GameScene 移动到另一个

我是Swift和SKSPRITE的新手我在我的第一个类GameScene上添加了一个按钮:SKScene。单击按钮后,我想移动到新的GameScene。我怎样才能做到这一点?我有方法覆盖functouchesBegin(touches:NSSet,withEventevent:UIEvent){... 最佳答案 http://www.raywenderlich.com/42699/spritekit-tutorial-for-beginners我的回答是从这个RayWenderlich教程中删除的:SKTransition*reve

swift - SpriteKit 聚光灯效果

我正在尝试使用SpriteKit为iOS游戏创建聚光灯效果。目标是通过在屏幕边缘弹跳的几个移动聚光灯来显示背景。我已经使用SKCropNode或更简单的SKSpriteNode成功地找到了一个移动聚光灯的解决方案。对于SKSpriteNode解决方案,我只是在我的场景之上(即它是最后添加的子节点)添加了一个SKSpriteNode,它是一个比场景大(1.5倍长和1.5倍宽)的图像。该图像是一个黑色矩形,中间有一个透明圆圈(使用alphachannel)。我添加了一个等于圆圈大小的物理体。我给了它一个冲动,其余的由SpriteKit完成。然后我有一个漂亮的聚光灯四处弹跳并显示透明圆圈后面

swift - SKSpriteNode 碰撞识别速度不够快

我有一个SKSpriteNode(“称为球”),它是通过向其physicsBody施加脉冲来启动的。在我的didBeginContact方法中,我检查节点是否与障碍物发生碰撞。如果是这样,我希望SKSpriteNode立即停止移动(例如,“坚持”到它碰撞的对象)。问题是,当意识到球已经与障碍物发生碰撞并且球的速度设置为0时,球已经反弹,而不是碰到它碰撞的障碍物,现在是30像素左右离开funcdidBeginContact(contact:SKPhysicsContact){ballInMidAir=falsevarfirstBody:SKPhysicsBody=contact.body