问题标签 [skphysicsbody]
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.
sprite-kit - SpriteKit bodyInRect 在不应该的时候找到节点
我正在尝试检测当前精灵节点的左侧或右侧是否有精灵节点。
这看起来很简单,但我看到了一个奇怪的行为。
我创建了一个与当前节点高度相同且与当前节点具有相同原点的细矩形(宽度 = 1 点)。
例如:
然后我测试看看那个矩形(adjacentFrame)是否与一个节点相交:
现在,奇怪的是,obstructingBody 本身就包含了“block”!
我什至添加了代码以将 SpriteNode 添加到带有相邻帧帧的场景中,这样我就可以检查矩形的位置。它清楚地显示了“块”左侧的几个点,并且显然没有触及它!
有什么想法可以在这里发生吗?
谢谢,克里斯
ios - 为什么这个 SKPhysicsJointPin 不能将这两个精灵放在一起?
我显然不太了解 SKPhysicsJoint,但是除了 Apple 文档之外,网络上的信息还很少。下面的代码有什么问题,我认为应该让头部和颈部永久连接 - 我的意图是它们就像两张带别针的纸一样,这样它们就可以旋转一点,但不仅仅是完全分开. 当我运行这段代码时,它们掉到他们所在的 SKScene 的底部,撞到地面,然后头部从身体上掉下来。
也许关节没有与他们一起移动或其他什么,它只是在他们移动时保持原位?
ios - 我将如何使用 SpriteKit 构建台球杆/简化的弹球式柱塞?
我正在开发一款游戏,在该游戏中,用户应该能够触发从屏幕边缘伸出的“棒”来置换屏幕上的元素(球)。这些弹丸大致类似于台球杆。或者可能是弹球柱塞,除了它们从“加载”位置(主要是屏幕外)开始,当被触发时,它们会弹出,然后迅速撤退。
我不清楚我应该如何使用 Sprite Kit 构建这些。
游戏使用物理引擎,屏幕上的球应该受到重力的影响,并且当它们与杆碰撞时它们应该被移位。然而,杆既不应该受到重力的影响,也不应该在它们与球碰撞时发生位移——无论它们是否与球接触,它们都应该简单地后退。
我意识到我可以设置杆的affectedByGravity 属性。但是,因为它们在与球碰撞时仍会发生轻微位移。我怎样才能“修复”或“固定”它们?我需要使用 SKPhysicsSlidingJoint 吗?如果是这样,有人在网上遇到过任何例子吗?有没有更简单的方法来做到这一点?
objective-c - SKA动作尺度物理身体
我真的不知道从哪里开始。我有一个存储在 anSKSpriteNode
和 aphysicsBody
中的圆圈的图像,它在创建时反映了它的大小。
不过,我正在使用SKAction
缩小图像的大小,而物理体的大小保持不变。我怎样才能缩小physicsBody?
我的代码:
objective-c - SKPhysicsBody 改变动画/物理速度
有没有办法改变physicsbody的动画/物理速度?
我仍然希望每秒调用更新方法 60 次,我只希望屏幕上的所有内容都缓慢移动,但仍然具有相同的属性值(即速度 (10, 10) 仍然会做同样的事情,只是慢动作..)
有什么方法可以诱发这种情况还是有内置功能?
我能想到的一件事是将每个运动属性值除以 2 并使重力减半,但我认为您不能设置重力,而且我不确定这是否会在物理方面起作用......
ios7 - SKPhysicsBody 物体所承受的净力?
基本上我想给physicsBody“健康”,当它被击中时,我想动态地降低健康。如果它受到重创,我想带走很多健康。
我知道如何使用 Node.userData 赋予节点健康并从该值中删除,但我不知道如何检测冲击力。
我也知道您可以使用 CGRectIntersectsRect 检测到“影响”,但这显然不会返回幅度,因为它是节点的方法而不是physicsBody..
我怎样才能做到这一点?
ios7 - SpriteKit 物理身体始终直立
我有一个 spritenode,其物理主体受重力和动态影响,但是,当它碰到它旋转的东西时。
我只将物理体用于 Y 轴重力,没有别的。当它水平撞击某物时,我不希望它受到那个东西的影响。
我怎样才能做到这一点?
objective-c - applyForce(0, 400) - SpriteKit 不一致
所以我有一个物体,它有一个物理体,重力会影响它。它也是动态的。
目前,当用户触摸屏幕时,我运行代码:
应用力(0, 400)
物体向上移动大约 200 米,然后由于重力而落下。这只会在某些时候发生。其他时候,它会导致对象仅在 Y 方向移动 50ish 个单位。
我找不到模式......我把我的项目放在保管箱上,这样如果有人愿意看它就可以打开它。
https://www.dropbox.com/sh/z0nt79pd0l5psfg/bJTbaS2JpY
编辑:这似乎发生在玩家在撞击后稍微从地面弹起片刻时发生。有没有办法让玩家完全不反弹?
编辑 2:我尝试使用摩擦参数来解决这个问题,并且只允许玩家在摩擦 = 0 时“跳跃”(你会认为这将是玩家在空中的所有情况)但摩擦似乎大于 0每时每刻。我还能如何检测玩家是否正在触摸物体(除了使用 y 位置)?
谢谢
ios - Sprite Kit bodyAtPoint 和 bodyInRect 返回不正确的值?
我创建了一个非常简单的示例代码,只有一个场景,一个精灵节点 20x20px,位于屏幕上的 0.0 点。当我调用scene.physicsWorld bodyAtPoint
它时,即使在例如:34x34 时也会返回这个节点。但在点 35x35 它返回null
。所以基本上两个轴上从 0px 到 34px 的所有点都返回这个节点,从 35px 开始,它不再返回它了。如果精灵明显以 20px 20px 结束,知道可能是什么原因吗?在 中可以看到相同的行为bodyInRect
。
这是示例代码:
这是控制台日志:
是否有可能是 Apple 的错误,在nodeAtPoint
和中都有nodeInRect
吗?难以相信。但是代码太短了,我看不出这里有什么错误。任何帮助将不胜感激。
ios7 - 加入后奇怪的 SKPhysicsWorld 行为
我正在使用 SKSpriteKit 制作钓鱼游戏。我有一个用于钩子和一些鱼的精灵节点(为此我扩展了 SKSpriteNode 类)。理想情况下,鱼被钩住时的行为是鱼的嘴会移动到鱼钩的尖端(使用动作来做到这一点):
然后鱼会向下旋转一点以模拟挂在钩子上(另一个动作:)
我认为这样运行这些:
这或多或少有效(根据鱼的方向解决扭结)
我后来想做的是在鱼和鱼钩之间创建一个关节,所以如果我移动鱼钩并且它已经钓到了一条鱼,鱼就会跟着一起走。
我这样做:
如果我在没有关节的情况下运行代码,鱼会留在钩子上并旋转。但是,一旦创建了关节并运行了动作,就不会调用来自上方的旋转动作(尽管会移动到钩子)。
我一点也不知道为什么会发生这种情况。有人有任何指示吗?