检查一个物理物体是否在不等待didBeginContact的情况下接触另一个物体

编码猫

我知道您可以使用来检测接触碰撞SKPhysicsContactDelegate,但是您可以检查一个物理物体当前是否正在接触另一个物理物体?

我需要这样做来检查场景中仍有哪些区域可以放置物品(例如,选择一个随机点,如果途中有东西,请选择另一个随机点)。

有这个功能:

/* Returns an array of all SKPhysicsBodies currently in contact with this one */
- (NSArray *)allContactedBodies;

但是直到下一次创建节点的更新之后,它似乎没有返回任何有用的信息。

rakeshbs

您可以编写一个函数来手动遍历所有节点,并检查两个圆是否与一个点相交。

由于您曾说过每次的半径都会不同,因此您必须对其进行跟踪。一种方法是使用节点的用户数据。

[node.userData setObject:[NSNumber numberWithFloat:10.0] forKey:@"radius"];

然后,您可以按照以下方式查找是否有相交的圆。

-(BOOL)checkPointForNode:(CGPoint)point withRadius:(CGFloat)nodeRadius
{
    for (SKNode* child in [self children])
    {
        NSNumber *childRadius = child.userData[@"radius"];
        if (childRadius != nil)
        {
            CGFloat diffX = point.x - child.position.x;
            CGFloat diffY = point.y - child.position.y;

            CGFloat distance = sqrtf(diffX * diffX + diffY * diffY);

            CGFloat sumRadius = nodeRadius + childRadius.floatValue;

            if (distance <= sumRadius)
            {
                return  YES;
            }

        }
    }
    return NO;
}

YES如果要添加的圆的边界内有一个圆,则该函数返回这意味着您不能在不触摸另一个节点的情况下添加新节点。否则返回NO这意味着您可以添加新节点而不接触任何其他节点。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

我如何让一个物理物体抵消另一个物理物体的碰撞。

来自分类Dev

如何判断一个物体是否在另一个物体的距离之内?

来自分类Dev

SpriteKit-计算一个物体击中另一个物体的次数

来自分类Dev

为什么我的精灵在触摸另一个物理物体时会发抖?

来自分类Dev

如何聆听另一个物体的事件发射?

来自分类Dev

跟随另一个正在旋转的物体

来自分类Dev

如何聆听另一个物体的事件发射?

来自分类Dev

传送后将一个物体移动到另一个物体上的同一点

来自分类Dev

绕着另一个物体旋转的物体不断加速

来自分类Dev

动态缩放堆叠在另一个物体上的物体

来自分类Dev

如何在另一个物体周围移动某个物体?

来自分类Dev

三.js | 是否可以使用 raycaster 将光线从一个物体投射到另一个物体?

来自分类Dev

Java Rest API 在不等待响应的情况下调用另一个 Rest - 在 JAX-RS 中

来自分类Dev

一个物体不动

来自分类Dev

如何给屏幕边缘一个物理物体

来自分类Dev

如何给屏幕边缘一个物理物体

来自分类Dev

找到两个物体的高度差异并将高度分配给另一个物体

来自分类Dev

Box2d检测何时一个物体完全位于另一个物体内部以及它从哪一侧进入

来自分类Dev

Box2d检测何时一个物体完全位于另一个物体内部以及它从哪一侧进入

来自分类Dev

一旦玩家进入一个物体并在它进入另一个物体时停止触发计时器

来自分类Dev

为什么一个物体的质量永远不能比另一物体大100倍?

来自分类Dev

如何将不可包裹的物体从一个活动传递到另一个活动?

来自分类Dev

如何将物体从一个碎片传递到另一个碎片?

来自分类Dev

是否可以检查一个类是否在不创建实例的情况下扩展了Java中的另一个类?

来自分类Dev

Windows批处理文件可以在不等待该程序完成的情况下调用另一个程序吗?

来自分类Dev

小写一个液体物体

来自分类Dev

给移动的物体一个方向

来自分类Dev

如何判断一个空物体?

来自分类Dev

Sprite Kit-将两个物理物体添加到一个SKNode

Related 相关文章

  1. 1

    我如何让一个物理物体抵消另一个物理物体的碰撞。

  2. 2

    如何判断一个物体是否在另一个物体的距离之内?

  3. 3

    SpriteKit-计算一个物体击中另一个物体的次数

  4. 4

    为什么我的精灵在触摸另一个物理物体时会发抖?

  5. 5

    如何聆听另一个物体的事件发射?

  6. 6

    跟随另一个正在旋转的物体

  7. 7

    如何聆听另一个物体的事件发射?

  8. 8

    传送后将一个物体移动到另一个物体上的同一点

  9. 9

    绕着另一个物体旋转的物体不断加速

  10. 10

    动态缩放堆叠在另一个物体上的物体

  11. 11

    如何在另一个物体周围移动某个物体?

  12. 12

    三.js | 是否可以使用 raycaster 将光线从一个物体投射到另一个物体?

  13. 13

    Java Rest API 在不等待响应的情况下调用另一个 Rest - 在 JAX-RS 中

  14. 14

    一个物体不动

  15. 15

    如何给屏幕边缘一个物理物体

  16. 16

    如何给屏幕边缘一个物理物体

  17. 17

    找到两个物体的高度差异并将高度分配给另一个物体

  18. 18

    Box2d检测何时一个物体完全位于另一个物体内部以及它从哪一侧进入

  19. 19

    Box2d检测何时一个物体完全位于另一个物体内部以及它从哪一侧进入

  20. 20

    一旦玩家进入一个物体并在它进入另一个物体时停止触发计时器

  21. 21

    为什么一个物体的质量永远不能比另一物体大100倍?

  22. 22

    如何将不可包裹的物体从一个活动传递到另一个活动?

  23. 23

    如何将物体从一个碎片传递到另一个碎片?

  24. 24

    是否可以检查一个类是否在不创建实例的情况下扩展了Java中的另一个类?

  25. 25

    Windows批处理文件可以在不等待该程序完成的情况下调用另一个程序吗?

  26. 26

    小写一个液体物体

  27. 27

    给移动的物体一个方向

  28. 28

    如何判断一个空物体?

  29. 29

    Sprite Kit-将两个物理物体添加到一个SKNode

热门标签

归档