Tag: 精灵套件

SpriteKit,看似随意,下降到40 FPS

我在写一个iOS游戏,使用SpriteKit。 在游戏过程中,显然是随机的,帧速率将从60 FPS下降到40 FPS(总是40)。 我正在iPhone 6上运行这个版本。在编译发布和debugging的时候,这个bug是存在的。 我通常在屏幕上一次有30个左右的节点(有时候比较less),其中大部分节点都有物理实体,但是除了5个以外,其他的都是dynamic设置为NO 。 上述的物理实体不会相互碰撞,但是它们会与玩家节点发生碰撞。 玩家节点没有快速移动,而且一次只能触摸5个左右的节点。 当玩家节点与其他一些物理实体接触时,其dynamic属性被设置为YES 。 也许值得一提的是,我有一些UIView和UIImageView覆盖SKView的顶部,充当HUD。 这让我觉得这不是一个特别强烈的模拟。 我已经通过我的- update:方法,行动,联系侦听器等,没有发现任何可能造成这一点。 我在乐器(时间分析器)中度过了最后几天,希望能对这件事情有所了解,但是我还没有发现任何可以跳出来的东西。 不过,我承认对仪器来说还是比较新的。 现在,我没有办法重现错误。 我只是玩游戏,希望能遇到它。 有时会在场景加载(相当less见)时发生,只是在正常的游戏过程中,或者根本不存在。 如果我暂停游戏(暂停视图和场景),并恢复它,则帧速率会恢复。 有时帧速率会在几秒钟后恢复正常。 我完全不知道该怎么做。 任何帮助将非常感激。 提前致谢。

SKAction playSoundFileNamed在接到两个连续的电话后不起作用

我试图找出为什么playSoundFileNamed接收两个连续的电话呼叫后不工作。 实际上,只有在收到第一个电话后才能使用。 重现步骤是: 开始一个游戏 等待电话,然后转到后台 电话结束(主叫方拒绝或中断) 回到前台 在此之后,从touchesBegan播放声音仍然有效。 当我重复上面的步骤(跳过第一步)时,touchesBegan的机制停止工作。 不知道为什么会发生这种情况…这是可以产生描述行为的代码: @interface GameScene() @property (nonatomic, strong) SKAction *sound; @end @implementation GameScene -(void)didMoveToView:(SKView *)view { self.sound = [SKAction playSoundFileNamed:@"sound1.wav" waitForCompletion:NO]; } -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { /* Called when a touch begins */ [self runAction:self.sound]; } @end 我知道有一些与此相关的问题,但给出的答案与解决方法有关。 我对解决方法不感兴趣,而是为什么会发生这种情况? 它是否与AVAudioSession有关? (可能不是)我知道我可以使用AVAudioPlayer作为一种解决方法,但仍然不知道该演奏很多简单的短音的性能是多less…

在SKScene中的UIPanGestureRecognizer

我一直在使用UIGestureRecognizers和SKScene/SKNode's新SKScene/SKNode's进行SpriteKit 。 我有一个问题,我已经接近修复它,但我对一件事感到困惑。 基本上,我有一个平移手势识别器,允许用户在屏幕上拖动一个精灵。 我遇到的唯一问题是,只需轻轻点击一下,即可初始化平移手势,然后只有第二次点击才能正常工作。 我在想,这是因为我的平移手势是在touchesBegan初始化的。 但是,我不知道在SKScene的initWithSize方法中初始化它之后,还有什么地方停止了手势识别器的实际工作。 -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { if (!self.pan) { self.pan = [[UIPanGestureRecognizer alloc]initWithTarget:self action:@selector(dragPlayer:)]; self.pan.minimumNumberOfTouches = 1; self.pan.delegate = self; [self.view addGestureRecognizer:self.pan]; } } -(void)dragPlayer: (UIPanGestureRecognizer *)gesture { CGPoint trans = [gesture translationInView:self.view]; SKAction *moveAction = [SKAction moveByX:trans.xy:-trans.y duration:0]; [self.player runAction:move]; [gesture setTranslation:CGPointMake(0, 0) inView:self.view]; }

为什么SKShapeNode没有定位点?

我想知道为什么SKShapeNode没有一个锚点?

iOS版本:此版本在iTunes连接中无效

我最近上传了一个应用程序到应用程序商店,并且已经处理了几天。 我今天早上去检查了一切,在iTunes连接的顶部栏上,我点击了iOS版本,看看事情是如何发展的,并且有一个感叹号的红圈。 当我点击它时,它说“这个版本是无效的”。 有谁知道这个的原因?

脉冲SKSpriteNode取决于触摸的位置Swift 2

我正在学Swift 2,而且我正在做一个典型的球类比赛,在这里你会发现一个冲动。 但我不想让球总是直接通过Y坐标,这不会很好玩,我想添加一个冲动取决于触摸的位置,通过相反的方向。 我试图用ABakerSmith给OP的这个例子 ,但是它做的只是把我的球在同一个地方旋转,然后把它移到一边。 所以我得到了这个代码,已经检测到球的雪碧触摸,工作正常。 像他提到的扩展CGVector。 我在这里做错了什么? 也许扩展CGVector的计算是错误的我的情况? 另外,我不得不认为它不应该向下移动,只能向上或向左或向右,而不能向下。 更新这是代码: ball = SKSpriteNode(imageNamed: "ball") ball.name = ballCategoryName ball.userInteractionEnabled = false ball.setScale(0.3) ball.zPosition = 2 ball.position = CGPointMake(self.frame.size.width / 2, self.frame.size.height / 2) ball.physicsBody = SKPhysicsBody(circleOfRadius: ball.size.width / 2) ball.physicsBody?.friction = 0 ball.physicsBody?.restitution = 0.7 ball.physicsBody?.linearDamping = 0 ball.physicsBody?.allowsRotation = true ball.physicsBody?.categoryBitMask = PhysicsCategory.ball ball.physicsBody?.dynamic […]

从拍摄的真实物体360度旋转物体

我想创造360度旋转拍摄对象的能力。 它根据你“轻弹”的速度无休止地旋转。 通过向左或向右轻拂物体左右旋转。 当你触摸时停止旋转,如果它正在旋转,就停止旋转。 类似于Theodore Gray的应用程序。 以下是我正在尝试重新创build的部分应用的video。 (即3D旋转器) 这是我的手指与它交互的video。 https://youtu.be/qjzeewpVN9o 我正在寻找使用Swift和可能的SpriteKit。 我如何才能从真实的生活中获得高质量和function性的东西? 我配备了一台Mac,尼康D810和一个绿色屏幕。 也就是说,我猜测,一系列的静止图像是要走的路,但我觉得可能不够stream畅。 为了这个问题的目的,我想弄清楚什么是最有意义的编程。 例如,我正在倒带和快速转发的video或停止运动帧的纹理图集等。 注意:捕捉软件和摄影技术将是有用的信息,因为我在这个部门无能为力。 但是,我知道我可以在https://photo.stackexchange.com/上提问。 我的代码的基本逻辑是什么样的这个对象? 就……而言: 答:设置对象的animation或video的function,或者是让我的代码中使用图像的最佳方法。 B.旋转()函数和 C. stopSpin()函数。 整个项目样本是不需要的(虽然我猜这会很好)。 但是,这3个function足以让我去。 SpriteKit是最明智的select吗?

如何控制iOS Sprite Kit SKVideoNode中video的播放?

我将video加载到我的Sprite Kit SKVideoNode中,但是如何停止并重新开始播放或在video的特定时间? 我所看到的只是播放和暂停的方法。 // AVPlayer NSURL *fileURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"HowToPlay" ofType:@"mp4"]]; _avPlayer = [AVPlayer playerWithURL:fileURL]; // SKVideoNode _videoNode = [SKVideoNode videoNodeWithAVPlayer:_avPlayer]; [_videoNode play];

SKTexture预加载

当使用spritekit preloadTextures函数预加载纹理时,它会将提供的数组中的所有纹理一次加载到内存中。 如果你没有能力通过“加载屏幕”来分割游戏中的关卡,但是不同的图像文件有不同的关卡,那么怎样才能避免将所有图像一次存储在内存中而不会牺牲帧spritekit在需要时加载图像的速度?

SKEmitterNode particleAction不工作iOS9testing版

我正在iOS9 Beta 4中testing我的应用程序,并发现许多以前在iOS8中工作不正常的代码。 另一个例子是SpriteKit的SKEmitterNode“particleAction”属性。 以下代码适用于iOS8,但不适用于iOS9: // create the particle movement action SKAction *move = [SKAction moveByX:100 y:100 duration:5]; // also, I've tested several other SKActions, such as scaleBy, fade, rotate, to no effect here // create a target node and add to the SKScene SKNode *targetNode = [SKNode node]; targetNode.position = origin; [mySKSceneNode addChild:targetNode]; // […]