草庐IT

Sprite-Kit

全部标签

ios - 将场景大小设置为查看大小?

我正在使用SpriteKit,我希望场景的大小等于View的大小。在代码中,这很容易做到:我简单地在“viewDidLoad”中添加以下内容:scene.size=skView.bounds.size但是,我也在使用sks编辑器。有没有办法将场景大小设置为sks文件中的View大小?目前,sks文件显示我的尺寸是1024和768。 最佳答案 您可以像这样手动设置您想要的尺寸:GameScene*scene=[[GameScenealloc]initWithSize:CGSizeMake(1024,768)];scene.scaleM

ios - 将 Tiled 层导出到 1 个大 png 文件以节省内存是否明智?

我刚刚在Tiled中为我的SpriteKitmap制作了背景层。主层是绘制草地、泥土、水和地block的背景层——这是玩家角色“行走”的地方。该map由16x16的图block组成(将它们保持这么小是为了在map设计过程中更好地控制小细节)。它自己的map是100x100。所以它的尺寸相当不错。由于这些背景图block,我大约有757-778个节点。这太多了,我什至没有在第二层添加一棵树。由于我使用Tiled作为带有JSTileMap的map编辑器来显示它,我能否以某种方式将准备好的背景层从Tiled导出到.png文件并将其作为1张大图片加载到游戏中以将节点数减少到1。这不会极大地提高

android - Libgdx - 渲染许多小 Sprite VS 几个大 Sprite

我正在为我的游戏制作一种效果,我有几颗(200)颗星星从屏幕边缘出现,在逐渐消失的同时向中间移动。我想单独渲染每颗星星(因为它是自己的对象),这样星星就可以具有随机速度、淡入淡出时间、大小和位置。但是我担心它可能会极大地影响旧手机的性能,更改alpha并每帧渲染200个Sprite最多20秒(我在它们淡出时重新创建它们)。作为替代方案,我可以使用更大块的星星作为同一个Sprite(一张图片),这意味着我将不得不牺牲随机效果,星星会同时淡出,obv看起来不会那么好.我无法在旧手机上进行测试,所以我想问一下,每帧循环200个Sprite是否太多了(我在每一帧和位置改变alpha的小图像)?

ios - ' fatal error : NSCoder not supported' when using UIViewController

当我尝试运行连接到默认GameScene.swift文件的ViewController之一时出现以下错误。fatalerror:不支持NSCoder:requiredinit(coderaDecoder:NSCoder){fatalError("NSCodernotsupported")}我打算使用SpriteKit,因此系统提示我使用必需的初始化程序,但我不确定为什么这会导致问题。 最佳答案 您不应该使用requiredinit(coderaDecoder:NSCoder)进行初始化,除非您已经实现了它(这是一个wholediff

ios - 玩家坠落时 Spritekit 与平台碰撞

我正在spritekitobjectivec的帮助下制作一个spritekit平台游戏。为此,我正在使用spritekit的物理引擎,一切进展顺利,只是我还没有找到一种方法来实现玩家与平台的plaformer风格碰撞。我想要的是我的玩家应该在下落时而不是在跳跃时与平台发生碰撞。如下图所示。玩家在这里跳跃,所以他不能与平台碰撞在这张图片中,玩家正在坠落,所以他必须站在平台上。我试图在didBeginContact方法中消除平台与播放器的碰撞,但这没有帮助,因为我的平台不是动态类型。添加和移除碰撞对播放器有效,但对平台无效。任何帮助将不胜感激。编辑:这是一个示例,说明如果我在与两个相邻平台

ios - Sprite Kit 中的简单碰撞

我有两个节点。玩家和敌人。我希望Enemy节点在足够近时跟随Player节点,并且Enemy节点在与Player节点碰撞时会停止。我得到的是Enemy节点位于Player之上并且两个节点都被推送。我想过以某种方式阻止Enemy节点在与Player发生碰撞时移动,但在我看来这应该是一种更清洁的方式。(我通过在更新时改变它的位置来移动敌人节点)。这是我的GameScene.sks:-(void)didMoveToView:(SKView*)view{player=[selfchildNodeWithName:@"character"];enemy=[selfchildNodeWithNam

ios - 如何在用户与场景交互后改变 Sprite 的方向?

我有一个SKSpriteNode对象,它有一系列要永远运行的Action。这些Action很简单,可以先移到最右边,然后再回到最左边。当用户在应用中输入一些值时,我需要反转方向,即。e.如果Sprite向右移动,我需要让它向左移动,反之亦然。我怎样才能做到这一点? 最佳答案 我会这样做:(在swift中)funcmovament(){ifisMovingRight==true{runAction(SKAction.sequence([SKAction.moveByX(10,y:0,duration:0.05),SKAction.pe

ios - 如何在每增加 50 点后加速 Sprite Kit 游戏

我正在使用SpriteKit制作2D游戏,我需要添加一种方法来在每50点后加速游戏。我想出了一个方法,可以根据需要增加速度,但是我必须在更新方法中每增加50点复制、粘贴和调整一个if语句。我的解决方案的另一个问题是我必须在加速后立即增加我的分数,因为如果不是这样游戏就会完全加速,尽管我不知道为什么。到目前为止,这是我的解决方案://insidetheupdatemethod//pointsareaddedwhenanenemyisdestroyed//pointSpeedisthefloatvariablethatisusedtochangepositionsif(points==4)

ios - 为什么我在 Storyboard 中的 SKView 子类(用于 Spritekit) View 不接受任何自动布局约束?

我在Storyboard中有一个名为_gameView的UIView,我在Storyboard中对其应用了约束。它是SKView的子类,所以我可以在其中展示我的场景,但问题是它在运行时永远不会从Storyboard中的自动布局中获得约束,为什么? 最佳答案 SpriteKit场景由一种特殊的UIView呈现,SKView,并且不要使用自动布局。只有UIKit可以-自动布局处理UIView的排列。 关于ios-为什么我在Storyboard中的SKView子类(用于Spritekit)Vi

ios - 无法使用 physicsbody 设置位置

我已经摆弄这个话题大约三个月了。我以为这只是苹果很快会修复的一个临时错误,并将其推迟到开发结束。现在我的游戏快结束了,但我仍然找不到好的解决方法:如果我有一个SKShapeNode并向其添加一个physicsbody,我就不能再使用setPosition:(CGPoint)方法来更改位置。我的对象总是放置在其父View的(0,0)处。我尝试在didSimulatePhysics方法中设置位置,以确保完成所有物理计算。我尝试使用SKAction从similar移动节点和其他建议questionshere.没有一个按预期工作。对我来说唯一(某种)可行的解决方案是使用这种变通方法:-(voi