Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS7 SpriteKit物理中的碰撞法线_Ios7_Game Physics_Xcode5_Sprite Kit - Fatal编程技术网

iOS7 SpriteKit物理中的碰撞法线

iOS7 SpriteKit物理中的碰撞法线,ios7,game-physics,xcode5,sprite-kit,Ios7,Game Physics,Xcode5,Sprite Kit,有人知道如何在SpriteKit中找到或计算碰撞法线吗。来自Box2D的是一种提供正常信息的流形方法,但在SpriteKit框架中,SKPhysicContact仅提供一个接触点 我正在使用基本体对象、平面与圆碰撞、圆/矩形碰撞和圆/自定义形状碰撞 请有人告诉我使用碰撞接触点计算曲面法线的数学方法,我将不胜感激。更新:从iOS 8开始,skphysiccontact有一个属性。然而,下面的建议可能仍然适用,因为普通联系人并不总是做你想做的事情 由Box2D计算的碰撞法线。许多2D物理引擎(可能

有人知道如何在SpriteKit中找到或计算碰撞法线吗。来自Box2D的是一种提供正常信息的流形方法,但在SpriteKit框架中,SKPhysicContact仅提供一个接触点

我正在使用基本体对象、平面与圆碰撞、圆/矩形碰撞和圆/自定义形状碰撞


请有人告诉我使用碰撞接触点计算曲面法线的数学方法,我将不胜感激。

更新:从iOS 8开始,
skphysiccontact
有一个属性。然而,下面的建议可能仍然适用,因为普通联系人并不总是做你想做的事情


由Box2D计算的碰撞法线。许多2D物理引擎(可能包括SpriteKit)的碰撞检测/解析算法也是如此

如果您希望实现经典的突破式球拍(在球拍末端击球比在球拍中部击球更容易使球偏转),以下是一些想法:

  • 使用椭圆物理体作为桨叶。(即使你的精灵艺术大多是矩形的,但玩家可能不会注意到几何体上的差异。)或者使用多个节点的构造,每个节点都有自己的物理实体,从圆、矩形和椭圆组成更复杂的曲率

  • 实施碰撞后处理程序(或),并在碰撞后调整球的速度。可以将接触点转换为(桨叶的)节点坐标,找到距桨叶中心的水平偏移,并使用该偏移来缩放或旋转球的新速度向量。(请注意,如果您正在做这样的非平凡向量数学,您可能会发现将向量转换为
    vector_float2
    非常方便,因此您可以使用SIMD库提供的硬件加速向量数学函数。)


  • skphysiccontact
    包含
    contactNormal
    向量属性

    哪些类型的形状发生碰撞?它们是基于边缘的碰撞吗?这些将决定你如何计算碰撞法线,并使你的问题更容易回答。我主要使用原始形状、圆和矩形,但我确实有一些带角度边/平面的自定义形状(想想像经典的砖块破碎机桨叶这样的自定义形状)。因此,使用物理引擎的法线,我应该能够计算反射方向。谢谢@rickster。我曾考虑过使用多个节点。我的Box2D版本的破砖游戏有多个固定装置,在通电时也很容易分开和改变形状。我需要的帮助是找出如何仅使用接触点和碰撞对象圆或自定义形状计算曲面法线。我用碰撞物体的中心位置和接触点来计算法向量,但它很麻烦,不像我想象的那样工作。如果你知道任何我可以用来学习数学的网站,请提供建议。