- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这似乎是 Apple 的一个重大疏忽,但由于 SKPhysicsJoints 在场景坐标中设置了 anchor ,这使得无法进行任何类型的滚动游戏。
要在 SpriteKit 中模拟摄像机,您需要创建一个包含所有游戏元素的 WorldNode,然后将其平移到场景中。不幸的是,这样做会导致游戏中每个对象的场景坐标在您平移世界时在每一帧上发生变化。反过来,这会破坏关节 anchor ,事情会变得疯狂。
甚至没有办法改变关节的 anchor ,所以我什至没有办法在每一帧更新坐标。在滚动游戏中使用 SKPhysicsJoint 似乎不是一种选择。
有人知道解决这个问题的方法吗?
最佳答案
好吧,我想我明白是怎么回事了,我原来的假设是完全错误的。我的 anchor 看起来不正确的原因是 [convertPoint toNode] 调用返回给我的场景坐标不正确。几个小时后,我意识到它恰好缩小了屏幕尺寸的一半。我的场景的 anchor 为 (0.5, 0.5),但这搞砸了转换值。所以,如果我简单地用 width/2, height/2 偏移点,它是正确的:
GPoint pt = CGPointMake(anchorWorldX, anchorWorldY);
pt = [gGameScene convertPoint:pt fromNode:gGameWorld]; // convert to scene coords, but it's WRONG
pt.x += scene.size.width * scene.anchorPoint.x; // this properly adjusts the value to be correct
pt.y += scene.size.height * scene.anchorPoint.y;
SKPhysicsJointPin* pin =[SKPhysicsJointPin jointWithBodyA:hinge.physicsBody bodyB:door.physicsBody anchor:pt];
关于ios - SKPhysicsJoints 可以用于滚动的 SpriteKit 游戏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661940/
我有这个代码,我连接两个节点,一切都按预期工作。问题是我想删除节点之间的连接蓝线(附图为引用)。我该怎么做? //This function creates a player sprite no
使用 Swift 和 Sprite-Kit,我试图在名为“pin”的静态 SKSpriteNode 位置与用户触摸屏幕的任何位置之间创建一条具有逼真的物理特性的绳索。我通过添加称为 ropeNodes
所以我有一个我在 Sprite Kit 中制作的牵线木偶,并将他放在一个场景中。我创建了一个 Marionette 类,它是 SKNode 的子类,当我创建这个类的实例时,我将多个 SKSpriteN
使用 spritekit 物理关节如何让一个物体以固定距离绕另一个物体运行? 对象-A,不应移动 物体 B,当施加力时应该绕物体 A 旋转 为了实现这一点,我尝试在两个物理体之间附加一个 SKPhys
我目前正在使用 SKPhysicsJointSpring 将多个节点连接在一起。我希望能够使用对数公式而不是胡克定律来指定力。 有没有办法让我子类化SKPhysicsJoint来提供我自己的力计算?或
这似乎是 Apple 的一个重大疏忽,但由于 SKPhysicsJoints 在场景坐标中设置了 anchor ,这使得无法进行任何类型的滚动游戏。 要在 SpriteKit 中模拟摄像机,您需要创建
我正在开发一个 SpriteKit 项目。我通过 node.physicalsBody?.joints 访问节点的关节。 它应该包含一个 SKPhysicsJointPin,实际上我得到了一个包含一个
我希望能够在我的游戏中“放大”和缩小,但是当我缩放父“世界”SKNode 时,关节不会相应缩放,因为它们必须添加到 SKScene(这是根节点)。 更改 SKScene 的大小是有效的,但是我小时候拥
我在移动通过 SKPhysicsJoint 连接的 Sprite 时遇到问题。我有一个如下所示的 touchesMoved 方法: - (void)touchesMoved:(NSSet *)touc
我正在尝试在我的播放器底部添加一个碰撞框以仅检测平台。经过大量的试验和错误后,我发现有一个额外的物理体作为一个固定位置的子连接到另一个物理体,我需要使用 SKPhysicsJoint。我这样做了,它似
我正在 Sprite Kit 和 Swift 中制作一个游戏,我在屏幕底部有一个 Sprite,并且有一个从顶部掉落的 Sprite,我想捕获并粘在底部的 Sprite 上,所以我正在尝试使用 SKP
与 Swift和 Sprite Kit ,我想创建一个 SKPhysicsJoint (例如 an SKPhysicsJointFixed )但问题是 Xcode 没有给我任何建议: 如果我尝试手动设
我是一名优秀的程序员,十分优秀!