jjzjj

ios - SKNode的position属性和GKAgent2d的position属性有什么区别

SKNode有一个位置属性,表示节点在父节点中的位置。而GKAgent2D也有一个位置属性,根据文档,它是它在2D空间中的位置。这两者有什么关系?我们如何相互转换,是否需要转换? 最佳答案 您可以在没有SpriteKit的情况下使用GameplayKit。Agent的位置在GameplayKit内部,然后您将sprite的位置同步到您的agent的位置。这意味着您还可以拥有其他框架的代理。 关于ios-SKNode的position属性和GKAgent2d的position属性有什么区别

ios - 没有 init 方法时如何正确子类化 SKNode?

SKNode只提供+node方法。如果你这样做:+(instancetype)node{CustomNode*body=[CustomNodenode];//infiniteloop}如果你这样做:+(instancetype)node{CustomNode*body=[supernode];//instanceofSKNode,notCustomNode}如何以可以覆盖构造函数的方式子类化一个只有便利构造函数的类?还是创建自己的+customNode方法是最佳实践? 最佳答案 没有人说您不能在SKNode子类上使用[...allo

ios - 如何加速海量 SKNode Action ?

iOSSpriteKitAPI易于使用。但是,如果我同时在很多SKSpriteNode(大约2000+)上运行大量操作(大约5000+),fps会下降得很低。但是这种情况下GPU的使用率远远低于CPU的使用率。有什么方法可以加速GPU上的Action吗?或者有什么方法可以在MetalKit下实现图像的移动、缩放、淡入淡出和旋转Action? 最佳答案 您可以在节点上使用着色器来改变它们的外观。这将有利于移动、缩放、淡化和旋转节点。我通常建议对这些使用SKActions,因为它们是CPU通常会处理而不是GPU的非常基本的功能,在你的情

ios - 跟踪类别的 SKNodes

我有一个函数可以将敌人添加到我的场景中,该函数会按时间间隔调用我如何跟踪场景中的敌人数量以限制每个关卡中的敌人数量?**在我的更新函数中**CFTimeIntervaltimeSinceLastEnemy=currentTime-self.lastEnemyUpdateTime;self.lastEnemyUpdateTime=currentTime;if(timeSinceLastEnemy>1){//morethanasecondsincelastupdatetimeSinceLastEnemy=1.0/60.0;self.lastEnemyUpdateTime=currentTi

ios - SKNode "origin"是什么?

SKPhysicsBody的文档bodyWithCircleOfRadius:说:Createsacircularphysicsbodycenteredontheowningnode’sorigin.那么origin是节点位置吗?找不到它。 最佳答案 Soisoriginanodeposition?原点是给定坐标系中坐标为(0,0)的点。但是,在处理计算机图形时,您通常会处理许多不同的坐标系,并且每个坐标系都有自己的原点。例如,View层次结构中的每个View都有自己的坐标系。因此,您需要一些上下文才能准确知道您在谈论哪个。来自SK

ios - 在手势识别器操作方法中更改 `SKNode` 是否安全?

Apple在https://developer.apple.com/documentation/spritekit/skscenedelegate中声明:ModifyingSpriteKitobjectsoutsideoftheordainedcallbacks(abackgroundqueueoranythingelsenon-main-thread)canresultinconcurrencyrelatedproblems.Evendispatchingworkonthemainthreadasynchronouslyoratalatertimeisriskybecausethec

ios - SKNode 子类不移动子类

如果没有配对SKFieldNode,我的游戏中就没有Sprite,所以我的解决方案是创建SKSpriteNode的子类,并为SKFieldNode但它不起作用,因为SKSpriteNode表现得很奇怪(我不记得到底发生了什么)。所以我的下一个方法是将子类更改为SKNode然后我将SKSpriteNode和SKFieldNode作为这个新的属性SKNode。但事实证明,touchesMoved只会移动其中一个属性(以顶部为准),结果始终是SKSpriteNode。解决这个问题的最佳方法是什么,我该如何解决它,以便我可以为每个SKSpriteNode拥有一个SKFieldNode,同时仍然

ios - SKNode 上的 removeFromParent 是否会破坏实例?

阅读Apple关于removeFromParent的文档说:“从其父节点中删除接收节点。”这是否意味着节点被销毁了?我是否需要将节点设置为NULL以释放其内存? 最佳答案 当没有强引用持有时,对象(在ARC下)被释放。作为子节点的节点是强引用,删除节点通常会释放该节点,除非在其他地方有强引用。您可以通过实现-(void)dealloc并在其中设置断点或NSLog语句来轻松验证这一点。 关于ios-SKNode上的removeFromParent是否会破坏实例?,我们在StackOverf

ios - SpriteKit : SKNode zRotation + Anti-Aliasing

我创建了一个只有填充颜色和大小的SKSpriteNode,然后旋转它:SKSpriteNode*myNode=[SKSpriteNodespriteNodeWithColor:[SKColorgrayColor]size:CGSizeMake(100,100)];myNode.zRotation=0.2*M_PI;如何为我的SKSpriteNode启用抗锯齿?现在,灰色方block的边缘看起来呈锯齿状。我已经发现:当我创建一个灰色的100x100像素PNG并使用spriteNodeWithImageNamed:时,边缘看起来也是锯齿状的。如果我在灰色方形PNG周围添加一个1px的透明边

ios - SKNode 位置不工作,总是默认 0,0

我正在开发的SpriteKit游戏开发得相当好,添加了一些代码以将新的SKSpriteNode添加到场景中,(与我在代码中的许多其他地方所做的一样,但由于某种原因这次是只是忽略了我为节点设置的位置,我已经通过显式.position=CGPointMake(x,y)尝试了它并尝试了[nodesetPosition:CGPointMake(x,y)]都不起作用...节点确实被添加到场景中,但总是在0,0,无论我做什么,都检查了x和y以确保它们有效并在场景范围内,并尝试使用显式float等,无论我做什么,这个节点总是显示在0,0处,这完全没有意义。在游戏过程中,我所做的一切与我对许多其他节点