Ios 如何求两个精灵之间接触点的法向量

Ios 如何求两个精灵之间接触点的法向量,ios,swift,geometry,sprite-kit,sprite,Ios,Swift,Geometry,Sprite Kit,Sprite,我正在创建一个游戏,在这个游戏中,角色可以朝着他降落的表面的相反方向跳跃。例如,如果他在地上,他只能跳起来。如果他在右边,他只能向左跳……等等。。目前,我已经将我的SKNodes设置为leftWall、rightWall、bottomSurface、topSurface,并且有一个巨大的if/else。。。这是可行的,但会变得更复杂,因为我添加了不同角度的不同曲面等 我认为更好的实现方法是在角色精灵和普通墙节点精灵之间的接触点处找到法向量方向 有人能帮我确定A)精灵之间的接触点吗?假设角色有一个

我正在创建一个游戏,在这个游戏中,角色可以朝着他降落的表面的相反方向跳跃。例如,如果他在地上,他只能跳起来。如果他在右边,他只能向左跳……等等。。目前,我已经将我的SKNodes设置为leftWall、rightWall、bottomSurface、topSurface,并且有一个巨大的if/else。。。这是可行的,但会变得更复杂,因为我添加了不同角度的不同曲面等

我认为更好的实现方法是在角色精灵和普通墙节点精灵之间的接触点处找到法向量方向

有人能帮我确定A)精灵之间的接触点吗?假设角色有一个圆形物理体,墙壁总是直边。和B)接触点的法线
谢谢大家!

我不认为向量或撞击角度对你有多大好处,因为你的玩家的跳跃可能在方舟中。因此,在运动员跳跃方舟的不同点撞击同一表面将产生不同的结果

我建议您为曲面使用独特的类别位遮罩。更高级的版本是只使用一个类别,并利用SKSpriteNode的dictionary属性来保存角度值


根据接触数据,您可以为您的球员设置正确的角度跳跃。

实际上,我将在垂直于表面的方向上应用恒定速度。例如,如果曲面正在旋转,则会出现问题,在这种情况下,我需要知道法线方向。“你知道我怎样才能得到它吗?”杰里米-如果我没弄错的话,没有使用重力。如果是这种情况,你可以通过球员移动时x&y位置的变化来计算并存储球员的移动角度。然后,可以使用墙的zRotation属性计算玩家对墙的碰撞角度,并为玩家设置相应的向量。显然,你需要使用一个标准的零参考角,比如屏幕底部,来进行所有这些计算。对不起,我对iOS开发和spritekit非常陌生。你能给我举个例子说明你会怎么做吗?