ios - SKPhysicsJointSpring 在两个不是场景直接子对象的对象之间

标签 ios objective-c sprite-kit

我想混合 2 个教程,即:

http://hub.ae/blog/2014/03/26/soft-body-physics-jellyusing-spritekit/

https://developer.apple.com/library/ios/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Actions/Actions.html (示例:将场景置于节点部分的中心)

我一个一个地工作,但是当我混合两个时我有一个错误。

如果我的代码是这样开始的:

[self setAnchorPoint:CGPointMake(0.5f, 0.5f)];
_myWorld = [SKNode node];
[self addChild:_myWorld]; 
[self createPlayer]; // I replaced all [self addchild's to [_myWorld addChild]

然后相机跟随玩家但没有创建关节!

如果我将 [self createPlayer] 放在顶部并保留所有 [self addchilds] 原样(因为尚未创建 _myWorld),那么就会有关节效果很好,但相机不跟随玩家,因为玩家不在 _myWorld 中。

我一直保留 [self.physicsWorld addJoint:joint];

知道我哪里出错了吗?

最佳答案

当我按照 Apple 指南中的说明将部件移动到 _myWorld 时,我不知道我还必须移动 anchor ,因为它们始终位于场景坐标中。

添加这些行解决了问题:

CGPoint p1 = [self.scene convertPoint:CGPointMake(point1.position.x+self.frame.size.width/2, point1.position.y+self.frame.size.height/2) fromNode:_myWorld];
CGPoint p2 = [self.scene convertPoint:CGPointMake(point2.position.x+self.frame.size.width/2, point2.position.y+self.frame.size.height/2) fromNode:_myWorld];

AttachPoint 函数中。

关于ios - SKPhysicsJointSpring 在两个不是场景直接子对象的对象之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30176191/

相关文章:

swift - SceneKit:在 SCNView 上渲染 SpriteKit 粒子系统时应用程序崩溃,当所有代码似乎都是系统代码的一部分时如何调试

ios - Sprite 的圆形路径?

ios - 我如何对 SKSpriteNode 进行 alpha mask ?

objective-c - 来自同一文件的不同 md5 总和

ios - 如何在导航标题下添加搜索栏

objective-c - 每当我需要操作业务对象时,直接使用核心数据是一种好的做法吗?

ios - 在 iOS 应用程序中实现 MVC 模式的正确方法是什么?

ios - 非法尝试在不同上下文中的对象之间建立关系 'checklists'

ios - Firebase undefined symbol

ios - 从 Facebook 获取照片