有什么方法可以完全控制sprite套件场景中节点的出现顺序。我正在尝试制作一个非常简单的游戏,但我的节点出现的顺序似乎是随机的。非常感谢任何帮助 最佳答案 您可以阅读SKView类的ignoresSiblingOrder方法以及节点的zPosition属性。完整的文档已经在这个链接上给出了一个例子-https://developer.apple.com/library/prerelease/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Nodes/Nodes.
我正在为我的游戏制作一种效果,我有几颗(200)颗星星从屏幕边缘出现,在逐渐消失的同时向中间移动。我想单独渲染每颗星星(因为它是自己的对象),这样星星就可以具有随机速度、淡入淡出时间、大小和位置。但是我担心它可能会极大地影响旧手机的性能,更改alpha并每帧渲染200个Sprite最多20秒(我在它们淡出时重新创建它们)。作为替代方案,我可以使用更大块的星星作为同一个Sprite(一张图片),这意味着我将不得不牺牲随机效果,星星会同时淡出,obv看起来不会那么好.我无法在旧手机上进行测试,所以我想问一下,每帧循环200个Sprite是否太多了(我在每一帧和位置改变alpha的小图像)?
我有两个节点。玩家和敌人。我希望Enemy节点在足够近时跟随Player节点,并且Enemy节点在与Player节点碰撞时会停止。我得到的是Enemy节点位于Player之上并且两个节点都被推送。我想过以某种方式阻止Enemy节点在与Player发生碰撞时移动,但在我看来这应该是一种更清洁的方式。(我通过在更新时改变它的位置来移动敌人节点)。这是我的GameScene.sks:-(void)didMoveToView:(SKView*)view{player=[selfchildNodeWithName:@"character"];enemy=[selfchildNodeWithNam
我有一个SKSpriteNode对象,它有一系列要永远运行的Action。这些Action很简单,可以先移到最右边,然后再回到最左边。当用户在应用中输入一些值时,我需要反转方向,即。e.如果Sprite向右移动,我需要让它向左移动,反之亦然。我怎样才能做到这一点? 最佳答案 我会这样做:(在swift中)funcmovament(){ifisMovingRight==true{runAction(SKAction.sequence([SKAction.moveByX(10,y:0,duration:0.05),SKAction.pe
我正在使用SpriteKit制作2D游戏,我需要添加一种方法来在每50点后加速游戏。我想出了一个方法,可以根据需要增加速度,但是我必须在更新方法中每增加50点复制、粘贴和调整一个if语句。我的解决方案的另一个问题是我必须在加速后立即增加我的分数,因为如果不是这样游戏就会完全加速,尽管我不知道为什么。到目前为止,这是我的解决方案://insidetheupdatemethod//pointsareaddedwhenanenemyisdestroyed//pointSpeedisthefloatvariablethatisusedtochangepositionsif(points==4)
我有两个SKSpriteNode,我知道如何检测它们是否在同一位置,但我不知道如何检测它们在节点的哪个位置发生了碰撞。我特别想知道其中一个节点碰撞的地方,因为我想在节点高度结束时添加不同的applyImpulse,这样另一个节点就会改变方向。 最佳答案 didBeginContact在2个物体碰撞时传递给SKPhysicsContact。SKPhysocsContact有一个属性contactPoint,它是一个CGPoint,是场景坐标中两个物理体之间的接触点。从这个和你的两个body碰撞时的位置,你可以计算出碰撞发生在body上
我正在更新我当前的应用程序,我想知道是否有办法围绕中心旋转Sprite节点?例如,地球绕着太阳转。我也在使用sks文件。这是我的:importSpriteKitimportGameplayKitclassStartScene:SKScene{varsingleTap=SKSpriteNode()varpath=UIBezierPath()vargameStarted=Bool()overridefuncdidMove(toview:SKView){singleTap=self.childNode(withName:"single")as!SKSpriteNodesingleTap.an
我有几个基本的问题要弄清楚,希望你能帮忙...我正在开发游戏应用程序。它有游戏循环,每次迭代我都会绘制大约200个Sprite。绘制位图最快的方法是什么?目前我使用[UIImagedrawAtPoint]方法来绘制Sprite(Sprite大小可以是16x16...64x64),但有些事情告诉我,这不是最好的方法。据我了解,UIImage是基于Quartz技术的?cocos2d能提供更好的性能吗?我还考虑过使用OpenGLES通过纹理对象重现绘图机制。 最佳答案 如果您正在制作游戏,您可能希望避免使用Quartz/UIKit/Cor
如何在CCRect/sprite被触摸后禁用它的触摸?我在初始化方法中设置了Sprite:[[CCSpriteFrameCachesharedSpriteFrameCache]addSpriteFramesWithFile:@"testAtlas_default.plist"];sceneSpriteBatchNode=[CCSpriteBatchNodebatchNodeWithFile:@"testAtlas_default.png"];[selfaddChild:sceneSpriteBatchNodez:0];dinosaur1_c=[CCSpritespriteWithSpr
当我使用以下代码运行我的游戏时,我的游戏崩溃了,当玩家与enemy2相交时,我在调试控制台中收到以下错误。错误:***-[CCSpriteposition]:发送到释放实例0xa8cabd0的消息代码://Checkifenemy2isachildofthelayerif(enemy2){CGRectenemy2Rect=CGRectMake(enemy2.position.x-(enemy2.contentSize.width/2),enemy2.position.y-(enemy2.contentSize.height/2),80,//ERRORHAPPENSHEREStopped