由于对象被压扁而检测节点中的重叠

Posted

技术标签:

【中文标题】由于对象被压扁而检测节点中的重叠【英文标题】:Detecting a overlap in Nodes due to the object being squished 【发布时间】:2016-01-23 23:48:08 【问题描述】:

我正在寻找一种方法来测试一个节点是否被挤压在屏幕侧面和移动墙壁之间(如垃圾压实机)。

从视觉上看,屏幕右侧有一个正方形,然后一个垂直矩形将其推向屏幕左侧。

我的墙和玩家节点都有物理实体,墙以恒定的速度向玩家移动。显然,在某个点上,墙会与玩家重叠,因为墙已经没有空间来推动玩家了。有没有办法检测节点之间的重叠?

我试过用这个: (墙壁正在挤压屏幕左侧的玩家)

if (playerNode.position.x + playerNode.size.width/2 > wallNode.position.x-wallNode.size.width)

//Do whatever

但这工作非常挑剔,如果有的话,我宁愿使用物理引擎中内置的东西 谢谢!

【问题讨论】:

您应该更新您的问题以显示解决问题的努力并提供更多背景信息。请参阅how to ask a good question 此类问题经常被否决。关于问题本身......是的,您可能可以检查移动墙的位置并基于该检查“接触”。或者,您可以为墙和节点制作物理实体,并以这种方式检测接触。 【参考方案1】:

好吧,我已经找到了解决我正在做的事情的方法 -

如果你使用:

if ((playerNode.intersectsNode(wallNode) != nil)

//Do whatever

你得到了我正在寻找的确切结果。玩家和墙壁仍然正常碰撞,但如果玩家被撞到墙壁上,则调用此动作。我只是将这个 if-then 放入方法中:

override func update(currentTime: CFTimeInterval) 

【讨论】:

以上是关于由于对象被压扁而检测节点中的重叠的主要内容,如果未能解决你的问题,请参考以下文章

防止力有向图中的节点重叠

日期选择器看起来像文本字段的输入一样被压扁

Opencv中对象检测的重叠

ConstraintLayout 不缩放以适应各种屏幕尺寸

UIView 背景图像被压扁

ImageIcon 被压扁的颤动