问题标签 [skphysicsworld]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ios7 - iOS7 SKScene 如何让精灵从屏幕边缘反弹?
我正在构建一个球在 iPad 屏幕内弹跳的游戏。类似于乒乓球游戏。我看到 SKScene 的 SKPhysicsWorld 具有重力属性,并且还控制对象如何相互碰撞。
有什么方法可以自动检测精灵的边缘是否与屏幕的边缘碰撞,所以它可以反弹?还是我需要编写自己的碰撞代码?
ios7 - 加入后奇怪的 SKPhysicsWorld 行为
我正在使用 SKSpriteKit 制作钓鱼游戏。我有一个用于钩子和一些鱼的精灵节点(为此我扩展了 SKSpriteNode 类)。理想情况下,鱼被钩住时的行为是鱼的嘴会移动到鱼钩的尖端(使用动作来做到这一点):
然后鱼会向下旋转一点以模拟挂在钩子上(另一个动作:)
我认为这样运行这些:
这或多或少有效(根据鱼的方向解决扭结)
我后来想做的是在鱼和鱼钩之间创建一个关节,所以如果我移动鱼钩并且它已经钓到了一条鱼,鱼就会跟着一起走。
我这样做:
如果我在没有关节的情况下运行代码,鱼会留在钩子上并旋转。但是,一旦创建了关节并运行了动作,就不会调用来自上方的旋转动作(尽管会移动到钩子)。
我一点也不知道为什么会发生这种情况。有人有任何指示吗?
ios - 加速精灵套件的物理时钟
我有一个使用 spritekit 物理世界的动画。我一直在寻找是否有办法通过物理“快进”并获得结果或路径而不显示动画。我看着physicsWorld并没有看到任何东西?关于我如何做到这一点的任何想法?
基本上我想在用户决定执行之前向用户展示动画的结果位置。
ios - SKPhysicsContactDelegate Not Working
I have the following code:
in my scene:
As you can see, I set both ship and energy at the same location to start with, so they will always collide.
For both classes, I have the following code in their init method:
What I found is that the NSLog is never get called, so that the physical collision detection never works, I've read a lot from apple developer tutorials and it seems all the same of what they had, not sure why is not working. I can see the ship and energy images on screen collide each other.
objective-c - 如何检测 SpriteKit 中涉及碰撞的节点数
我正在创建一个射击游戏,我在其中从一个节点向敌方射弹射击射弹。当射弹同时与两个敌方节点接触时,接触代表会被调用两次。我希望能够知道弹丸接触了多少个节点,以便为玩家提供 2 倍的奖励。
任何人都可以提出一种干净有效的方法来实现这一目标吗?
ios7 - PhysicsBody -allContactedBodies 如何列出 PhysicsWorld 中的关节
我正在制作一个包含许多不同类别的身体的游戏。当用户移动一个物体并将其与同一类别的另一个物体碰撞时,它们会相互粘合。当三个身体总共粘在一起时,它们就会消失。
身体有一个位掩码,用于它的特定类别和一个 CNPhysicsCategoryGenBody 通常识别身体。这是一个游戏要求,因为还有其他参与碰撞的物体不受用户控制并且不会相互粘合。
粘合身体所涉及的 didBeginContact 的代码:
到目前为止,一切都很好。当我想列出附加到另一个身体的身体时,问题就来了。SKPhysicsBody -allContactedBodies 方法不会返回关节中的实体。我认为这可能是因为身体连接到一个关节而不是另一个身体。
SKPhysicsWorld 有添加或删除关节的方法,但我找不到列出参与关节的物体的方法。我需要列出这些物体以检查哪些物体被粘合,看看它们是否超过一定数量并将它们移除。
objective-c - 使用物理 SKSpriteNode 子节点暂停 SpriteKit 游戏
我有一个 SKSpriteNode,在SKNode *_fgLayer
.
现在,当我暂停或取消暂停游戏时,我希望 SKSpriteNode 保持原位而不旋转或掉落。如果我简单地使用_fgLayer.paused = YES;
SKSpriteNode 并不会停留在原地,而是会旋转并掉落。如果我physicsBody.dynamic = NO;
在暂停和 取消暂停时设置physicsBody.dynamic = YES;
它可以工作。
但是,经过几次尝试后,我总是会遇到以下崩溃:
"Assertion failed: (typeA == b2_dynamicBody || typeB == b2_dynamicBody), function SolveTOI, file /SourceCache/PhysicsKit/PhysicsKit-4.6/PhysicsKit/Box2D/Dynamics/b2World.cpp, line 670."
所以,我猜设置 aphysicsBody.dynamic = NO;
和 back 是行不通的。
有没有人知道
如何在游戏暂停时暂停动态物理体以保持原位?
sprite-kit - 将关节添加到 Sprite Kit 中的 SKPhysicsWorld 后无法更改 SKPhysicsJointLimit maxLength
因此,我创建了一个 SKSpriteNode 环,它们本质上是使用销接头连接在一起的矩形。我想将此环悬挂在 SKShapeNode 圆圈内。我已经使用 SKPhysicsJointLimit 将每个节点连接到 SKShapeNode。
这一切都很好,如果我将 maxLength 设置为我主观确定的“正确”数字,我就会得到我正在寻找的效果。
我已经将所有的限制关节存储在一个数组中,这样我就可以轻松访问,并且我已经将它们添加到了物理世界中。
所有这些都按预期正常工作,尽管需要一些工作才能使代码正确。这些东西很挑剔!
现在,我真正想做的是将 maxLength 设置为某个较大的数字,然后随着时间的推移逐渐减少该数字,以便戒指从“松散悬挂”变为“拉紧”
我尝试了多种方法——似乎都没有。首先,我试过:
但这根本没有做任何事情。
我终于意识到,在将关节添加到物理世界后,您似乎无法更改关节的属性。所以,我在场景的更新方法中尝试了这样的事情:
但是,这也不起作用。它抛出了错误:
即使我已经清楚地删除了它。所以,我真的不知道从这里去哪里。互联网上关于关节的文档和现有材料非常薄。我想接下来我会尝试移除所有关节并添加它们,但这将是一个巨大的痛苦。
任何想法都会非常有帮助!
objective-c - SKPhysicsJoints 都相当不稳定且富有弹性
所以,我有一个由几个物理体组成的物体,有 10 个左右的关节将它固定在一起(销钉和固定)。它运作良好,但我对关节的摇晃程度感到惊讶。我认为“固定”就像我将它们合并到一个物理体中一样固定,但它基本上摇摇晃晃以至于无法使用。同样使用针脚,当对连接对象施加力时,每个物理体上的点似乎彼此之间存在相当大的差异。情况一直如此,所涉及的两个物体的运动都不受任何限制。
我希望关节更坚硬,弹性更小。有没有人能够找到解决方案或原因?添加更多的关节似乎并没有使它变得更加僵硬。
ios - 由于联系委托中的断言失败导致游戏崩溃
当我的游戏因断言失败而崩溃时,我收到以下日志。
这种情况会间歇性发生(大约每 10 次我玩游戏就有一次)。我所能得到的是,Box2D 引擎与场景的物理世界中的接触检测相关的发生了一些不一致。但我无法在我的代码中查明问题的原因。
有人可以告诉我如何去寻找这个问题的根源吗?