例如,我正在尝试制作一些SKSpriteNode,它们只能持续10秒。我想为节点创建一个名为“bornTime”的自定义属性,以便在 update() if 中currentTime - bornTime > 10,该节点将被删除。
我想在背景之上创建我的播放器。不知怎的,这不起作用。节点计数器增加 1,但不可见。我在添加背景后添加播放器,因此它应该位于顶部。我用来创建播放器的代码:
var player = SKSpriteNode()
func addPlayer(gameScene: GameScene, xPos: CGFloat, yPos: CGFloat){
player = SKSpriteNode(imageNamed: "player")
player.size = CGSize(width: fieldsWidth, height: fieldsWidth)
player.position = CGPoint(x: xPos, y: yPos)
gameScene.addChild(player)
}
Run Code Online (Sandbox Code Playgroud)
我从另一个类访问该函数,如下所示:
person().addPlayer(self, xPos: fieldsWidth/2, yPos: fieldsWidth/2)
Run Code Online (Sandbox Code Playgroud)
希望你能帮助我。
我正在关注本教程(我认为它是用 JavaScript 编写的):3D 地形
我在 Swift 中尝试使用 SpriteKit,但在 x 轴旋转时遇到问题。
我用以下代码创建了这个网格:
var shapePoints = [CGPoint]()
for i in 0...zeilen+1{
for j in 0...spalten{
shapePoints.append(CGPoint(x: zellenGroesse*j, y: zellenGroesse*i))
shapePoints.append(CGPoint(x: zellenGroesse*j, y: zellenGroesse*(i+1)))
}
}
let fertigeShape = SKShapeNode(points: &shapePoints, count: shapePoints.count)
self.addChild(fertigeShape)
Run Code Online (Sandbox Code Playgroud)
现在我想将其旋转一定角度,但我只能在 z 轴上旋转它,而不能在 x 轴上旋转它。
SpriteKit 中有没有办法也可以在 x 轴上旋转节点?
谢谢并致以诚挚的问候
我正在使用流动的代码来动画我的精灵节点.
NSMutableArray *jumpUpTextures = [NSMutableArray arrayWithCapacity:10];
for (int i = 0; i < 4; i++) {
NSString *textureName = [NSString stringWithFormat:@"runnerJumpUp%d", i];
SKTexture *texture = [SKTexture textureWithImageNamed:textureName];
[jumpUpTextures addObject:texture];
}
SKAction *jumpUpAnimation = [SKAction animateWithTextures:jumpUpTextures timePerFrame:0.2];
Run Code Online (Sandbox Code Playgroud)
除了一个图像看起来更大和模糊之外,动画效果还可以.我有4张图片,大小如下:
runnerJumpUp0.png 62*56
runnerJumpUp1.png 62*56
runnerJumpUp2.png 62*56
runnerJumpUp3.png 47*56
Run Code Online (Sandbox Code Playgroud)
最后一个的大小与其他三个不同.动画运行时,最后一个图像将向上扩展.精灵的最后一帧看起来比其他帧大.你能告诉我该如何解决这个问题?
非常感谢.
可靠的人
有一个英雄可以通过点击屏幕来控制.我希望每次触摸屏幕时英雄看起来都有点不同.
我所做的是设置两个略有不同的图像.我希望在有触摸事件时更改英雄的形象.
到目前为止,我设置了一个数组来保存信息,但它有点无法解决:
NSMutableArray *heroFrames = [NSMutableArray array];
NSString* textureName = nil;
if (UITouchPhaseBegan) {
textureName = @"hero1.gif";
}
else {
textureName = @"hero2.gif";
}
SKTexture* texture = [SKTexture textureWithImageNamed:textureName];
[heroFrames addObject:texture];
[self setHeroFrames:HeroFrames];
self.hero = [SKSpriteNode spriteNodeWithTexture:[_heroFrames objectAtIndex:1]];
Run Code Online (Sandbox Code Playgroud)
我在运行时遇到异常..还有其他想法如何实现我的问题?
多谢你们!
我正在开发一个Sprite Kit项目,我需要在某些情况下只显示现有图像的一半.
我尝试使精灵的框架更小,但它只是拉伸图像.
是否有可能使用蒙版或其他东西才能只显示精灵/图像/纹理的一半?

roundbg.physicsBody = SKPhysicsBody(circleOfRadius: round.frame.width/2)
roundbg.physicsBody?.dynamic = false
Run Code Online (Sandbox Code Playgroud)
试图将球圈入圆圈内(roundbg).问题是,当我使用circleOfRadius作为圆形纹理时,它需要整个圆而不仅仅是边框.我明白为什么circleOfRadius正在这样做,但无法弄清楚如何抓住边界.有任何想法吗?因此理想情况下,当球落下时,它会被困在圆圈内(圆形).
第一款iOS应用程序/游戏,对此非常新.谢谢你的帮助!
我正在尝试将自己的着色器用作SKSphaN的SKShader,但我只是不知道正确的方法.我想要的只是一种用自动完成来编写着色器代码的方法,并且可以看到着色器,而不必等待很长时间来编译它,但它似乎比我想象的更难.
我已经安装了GLFW3以及其他一些奇怪的东西,因为大多数教程都建议使用OpenGL这样的东西,但它似乎更多的是整个OpenGL,而不仅仅是一种特定的着色器.
TL; DR:有没有人知道在SpriteKit中编写着色器以用作SKShaders的快速而简单的方法?
A SKSpriteNode有一个父母,该父母是随机分配的,并且不知道是谁。
如何SKSpriteNode找到它的父级,然后从场景中删除父级,从而删除自身和父级?
我正在使用许多SKScene和Sprite对象在xcode中创建游戏(Swift).我想创建一个场景(设置场景)来捕捉玩家的姓名,电子邮件,性别等.我该如何解决这个问题?如何捕获用户的输入.SKScenes不允许在UI中输入字段/值?
谢谢
skspritenode ×10
sprite-kit ×10
swift ×7
ios ×5
ios7 ×1
opengl-es ×1
parent ×1
rotation ×1
scene ×1
skscene ×1
skshapenode ×1
sktexture ×1
sprite ×1
uitouch ×1