有没有人想出(本地)如何将SKNode子类化为包含多个通过关节连接的物体 - 例如,汽车?
似乎没有办法将子类的关节添加到父场景的physicsWorld属性中.
此外,当尝试编译并运行下面的对象时,即使没有关节,我也会收到BAD_EXC_ACCESS错误.
感谢@Smick在此处发布的初始车辆代码:Sprite Kit引脚接头似乎有一个不正确的锚点
卡车类:
#import "Truck.h"
@implementation Truck
-(id)initWithPosition:(CGPoint)pos {
SKSpriteNode *carBody = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(120, 8)];
carBody.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:carBody.size];
carBody.position = pos;
carBody.physicsBody.mass = 1.0;
SKSpriteNode *carTop = [SKSpriteNode spriteNodeWithColor:[UIColor whiteColor] size:CGSizeMake(50, 8)];
carTop.position = CGPointMake(230, 708);
carTop.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:carTop.size];
carTop.physicsBody.mass = 0;
SKPhysicsJointFixed *carBodyJoint = [SKPhysicsJointFixed jointWithBodyA:carBody.physicsBody
bodyB:carTop.physicsBody
anchor:CGPointMake(0, 0)];
return self;
}
+(Truck*)initWithPosition:(CGPoint)pos {
return [[self alloc] initWithPosition:pos];
}
@end
Run Code Online (Sandbox Code Playgroud)
MyScene:

我正在看userDataSKNode 的财产并注意到这个说法:
Sprite Kit不会对存储在节点中的数据执行任何操作.但是,在归档节点时会归档数据.
这让我想到了 - 通过归档场景及其所有的家属/控制器,是否可以实现单一的保存游戏功能?
我试图理解是否有一些神奇的[存档]消息,我可以发送到场景或场景视图,以消除编写自定义数据结构来存储保存游戏的需要.
我正在开发一款游戏,我需要实现顶级栏,持有得分和其他东西等细节.
我的顶栏应该有以下(从左到右): - 一个50x50的图标,根据级别改变,但它的大小相同 - 一个标签,其中一些文字根据级别而变化 - ...其他元素
问题是当标签文本发生变化时,标签有时离图标太远,而其他时间则超过图标(取决于文本长度)
我以为我理解定位,但显然我没有...
//create array for level text label
levelTextArray = [[NSArray alloc] initWithObjects:@"\"Uuu! Bubbles!\"",@"\"Noob\"",@"\"I’m getting it..\"",@"\"This is easy\"",@"\"Wha?\"",@"\"It’s ooon now!\"",@"\"Come on..\"",@"\"Dude…\"",@"\"You’re pushing it..\"",@"\"I’ll show you!!\"",@"\"AAAAAAA!!!\"",@"\"Holy Bubbles… \"",@"\"Ninja mode on!\"",@"\"I’m on fire!!\"",@"\"The wheel's spinning, but the hamsters dead. \"", nil];
//add level text label
levelTextLabel = [[SKLabelNode alloc] init];
levelTextLabel.text = levelTextArray[0];
levelTextLabel.position = CGPointMake(60, CGRectGetMidY(scoreImage.frame)+5);
levelTextLabel.fontColor = [UIColor colorWithRed:0/255.0f green:1/255.0f blue:0/255.0f alpha:1.0f];
levelTextLabel.fontName = @"Noteworthy-Light";
levelTextLabel.fontSize = 14.0;
[self addChild:levelTextLabel];
Run Code Online (Sandbox Code Playgroud)
scoreImage是这种情况下的图标.另外..为了使图像完全出现在视图中,我将它定位如下:
scoreImage …Run Code Online (Sandbox Code Playgroud) 我有两个SKShapeNodes - 一个带有基于边缘的SKPhysicsBody,一个基于音量 - 我想要检测它们的交叉点而不会发生碰撞.我有这个工作正常,SKPhysicsContactDelegate接触方法被调用,因为一个经过另一个,但我的问题是didEndContact当边不再相交时被调用,即使一个主体完全包含在另一个主体内.确定真实接触或重叠的最佳方法是什么,而不仅仅是边缘交叉?我试过了usesPreciseCollisionDetection,但没有用.
这个问题和其他问题讨论了如何使用 SKCameraNode 跟踪 SpriteKit 中的节点。
但是,我们的需求各不相同。
其他解决方案,例如更新update(_ currentTime: CFTimeInterval)SKScene 中相机的位置,不起作用,因为我们只想在节点将 Y 像素向下移动到屏幕后调整相机位置。
换句话说,如果节点向上移动 10 个像素,相机应该保持静止。如果节点向左或向右移动,相机应保持静止。
我们尝试随着时间的推移而不是立即对摄像机的位置进行动画处理,但是对内部的摄像机运行 SKActionupdate(_ currentTime: CFTimeInterval)无法执行任何操作。
简单地说,我试图弄清楚如何在一段时间内向我的场景添加 10 个节点,每个节点由一些随机时间间隔分隔。
例如:
Loop 10 times:
A. Create and add node to scene
B. Wait some random amount of time, 1-5 seconds
C. Back to A
Run Code Online (Sandbox Code Playgroud)
也很高兴知道它何时完成运行,当最后一个节点添加到场景时让布尔值翻转,但这需要知道最后一个节点何时完成添加。我不太确定如何实现这一点。我读了一些关于dispatch_after但这不会解决我添加节点问题之间的随机时间。
我们想要迭代节点的祖先,直到找到具有特定类的父节点。
SpriteKit 允许您使用该属性迭代子级children,但该parent属性仅保存直接父级,而不是父级数组。我们如何迭代节点的所有祖先?
SKNode只提供+node方法.
如果你这样做:
+ (instancetype)node {
CustomNode *body = [CustomNode node]; // infinite loop
}
Run Code Online (Sandbox Code Playgroud)
如果你这样做:
+ (instancetype)node {
CustomNode *body = [super node]; // instance of SKNode, not CustomNode
}
Run Code Online (Sandbox Code Playgroud)
你如何继承一个只有一个方便构造函数的类,你可以覆盖构造函数?或者最好的做法是创建自己的+customNode方法?
在我看来,一个旨在简化的框架将具有这样的方法,而不是像我现在所做的那样从物理会计中删除每个节点:
[self enumerateChildNodesWithName:@"live" usingBlock:^(SKNode *node, BOOL *stop){
[node removeFromParent];
}];
Run Code Online (Sandbox Code Playgroud)
如果这是一个菜鸟问题,我很抱歉,我刚刚开始使用SpriteKit.谢谢!
我有一个运行不同操作的SKNode.根据我想要触发其他行为的运行操作.为此,我需要了解如何检查我的SKNode上当前正在运行的操作.我知道.hasActions()但这会返回一个普通的真/假值,这对我的情况没有帮助.
有没有人有更好的解决方案?
提前致谢
sknode ×10
sprite-kit ×10
ios ×7
objective-c ×2
save ×1
skaction ×1
skcameranode ×1
sklabelnode ×1
skscene ×1
skspritenode ×1
subclass ×1
swift ×1
swift3 ×1