问题标签 [skphysicscontact]

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.

0 投票
1 回答
49 浏览

swift - 快速编程。SKPhysicscontact 可能存在的问题

我正在开发一个项目/游戏,我一直在为游戏添加新敌人并对其进行编程。这就是我的代码在我开始更改之前的样子,并且只有一种“外星人”。我想创建两种新类型,一种是你因击球而失去 5 分,另一种是 10 分。在现在的代码中,只有三种类型中的一种,它给出 +5 分。各位大佬怎么加两个新的?我想我想多了,这就是我搞砸的原因。

0 投票
1 回答
27 浏览

swift - 如何修复未调用 SKPhysicsContactDelegate

我的精灵应该相互联系并打印到控制台,但是,一个在另一个后面,它们实际上并没有接触。不用说,没有任何东西被打印到控制台。

我已经尝试在函数中使用许多不同“类型”的 if 语句,但是,它们都没有奏效。例如,我尝试过使用:

如果 bodyA.categoryBitMask == 1 && bodyB.categoryBitMask == 2 || bodyA.categoryBitMask == 2 && bodyB.categoryBitMask == 1

也:

如果contact.bodyA.categoryBitMask <contact.bodyB.categoryBitMask

帮助将不胜感激!:)

我应该收到消息,但是“e”在“square”后面,我没有收到任何消息。

0 投票
0 回答
31 浏览

swift - SpriteKit 碰撞检测未按预期工作

所以我在我的GameScene班级中有这段代码(的孩子SKScene):

我可以看到气球和猴子节点在模拟器中已经相互接触,但是没有任何反应。我也遵守了SKPhysicsContactDelegate协议,如下所示:

编辑:我设置isDynamic = true并打印“联系!!” 正如预期的那样,但是我不希望物体影响彼此的位置

0 投票
2 回答
86 浏览

swift - 与 SKPhysicsContactDelegate 的可选碰撞

是否有可能在空间发生碰撞之前取消它?

示例:A 和 B 即将发生碰撞,但 A 具有一个属性,因此对于特定的 SKPhysicsContact,不应发生与 B 的碰撞。空间中的所有其他碰撞应该不受影响。

在阅读 Apple 的课程文档时,它说:

在物理模拟步骤期间调用物理接触委托方法。在此期间,无法修改物理世界,并且在模拟中对物理实体的任何更改的行为都是未定义的。如果您需要进行此类更改,请在 didBegin( :) 或 didEnd( :) 中设置一个标志,并在 SKSceneDelegate 的 update(_:for:) 方法中响应该标志进行更改。

这是否意味着我可以在实际碰撞成为事实之前检测到didBegin()中的状态并在update ()中更改碰撞掩码?

有一个类似主题的旧线程:SpriteKit SKPhysicsBody 在一个方向上碰撞,就像一扇门,你只能通过但不能返回

0 投票
1 回答
52 浏览

swift - Swift:在节点之间接触时执行命令

现在,我有一块从屏幕上掉下来的砖头。当它击中我的方格时,什么也没有发生。如下图所示,我有四个三角形在同一个位置组成一个正方形,但不透明度较低。这是为了帮助区分接触到正方形的哪一侧。然而,没有任何东西重生或消失会赢得砖块击中三角形(构成正方形的三角形)。

游戏画面

0 投票
1 回答
52 浏览

swift - 如何在 didBegin 联系函数中更改 SKShapeNode 的 fillColor?

我的目标是在 SKShapeNode 与另一个节点发生碰撞时立即更改该节点的 fillColor。我确实知道如何在碰撞点编辑物理体,但我无法弄清楚如何更改节点的填充或描边颜色等属性。

SKShapeNode:

然后我测试玩家和积木之间的接触:

我知道我可以通过使用来改变物理体本身

,但我不知道如何将 bodyB 的 fillColor 例如更改为红色。

我感谢您的帮助!

0 投票
0 回答
30 浏览

swift - 无法检测 spritekit 中的碰撞

我正在尝试构建游戏,但未检测到我的物理身体接触。你能帮帮我吗?我已经设置了physicsWorldDelegate 和categorybitmasks,但无法弄清楚出了什么问题。操场无法检测到敌人和我的头像之间的碰撞。

这是我的问题的 GIF - https://giphy.com/gifs/U7nmXZgVxNcCuvJc7j

0 投票
1 回答
28 浏览

swift - 已解决:防止 Sprite 在碰撞时倾斜?

如何防止两个精灵节点在碰撞时倾斜。假设我有一个带有 PhysicsBody 1 的长矩形和一个带有 PhysicsBody 2 的短矩形。我希望这两个能够击中,但不希望长矩形在碰撞后倾斜但仍然笔直站立。我怎样才能做到这一点?这是长矩形的代码:

这是短矩形的代码:

0 投票
1 回答
37 浏览

swift - EdgeFromLoop 似乎没有调用 didBegin?

我正在尝试编写一个游戏,其中星星从 iphone 屏幕的顶部落到底部。我想在它们离开屏幕时删除我的星图。我尝试使用physicsContactDelegate,并使用edgeFromLoop(self.frame)在我的框架周围创建一个边缘,但从未调用过didBegin。

下面是我的 gameScene.swift 文件

这是我的 GameViewController

我是一个快速的初学者,我知道我的问题可能非常基本,但我非常感谢任何帮助!谢谢!

0 投票
1 回答
51 浏览

swift - 如何通过接触从 SKNodes 获取一个实体 SKPhysicsBody 或 SKNode 对象?

我正在尝试创建一个类似于 House Stack 的游戏(https://apps.apple.com/gb/app/house-stack/id1458713825?l)但在分配物理机制时遇到问题。

我的主要问题是当节点下降并与其他人接触时创建一个对象,并在它们达到特定高度时将它们以固体形式向下移动。

我试图创建节点之间接触的固定关节,并在最后一个节点位置 y = 0 时移动它们,但固定关节没有像我想的那样工作。节点像蛇一样摇晃并在移动时崩溃。

还尝试使用接触创建一个新的单个对象并计算其高度,但无法弄清楚我应该如何使用 init(body:[SKPhysicsBody])。即使我将物理体属性分配给新对象,我也无法测量或调用它的高度并使用另一个节点联系人更新身体。

任何想法或例子都会很好。这是我的代码,在此先感谢。

SKNode(内部touchesBegan多次创建同一个节点):

移动对象:

关节和动作: