【问题标题】:How to find the normal vector of the contact point between two sprites如何找到两个精灵之间接触点的法线向量
【发布时间】:2015-03-20 15:33:42
【问题描述】:

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

我认为实现这一点的更好方法是在角色精灵和一般 wallNode 精灵之间的接触点找到法线向量方向。

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

【问题讨论】:

    标签: ios swift geometry sprite-kit sprite


    【解决方案1】:

    我认为冲击的矢量或角度不会对你有太大的帮助,因为你的球员的跳跃很可能是在方舟中。因此,在玩家跳跃方舟的不同点击中同一表面会产生不同的结果。

    我建议您为表面使用独特的类别位掩码。更高级的版本是只使用一个类别并利用 SKSpriteNode 的字典属性来保存角度值。

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

    【讨论】:

    • 实际上在垂直于表面的方向上应用恒定速度。例如,如果表面正在旋转,这就会出现问题,在这种情况下,我需要知道法线方向。知道如何获得它吗?
    • @Jeremy - 如果我理解正确,没有使用重力。如果是这种情况,您可以通过玩家移动时 x 和 y 位置的变化来计算并存储玩家的移动角度。然后,您可以使用墙壁的 zRotation 属性计算玩家对墙壁的撞击角度,并为玩家设置相应的矢量。显然,对于所有这些计算,您将需要使用像屏幕底部这样的标准零参考角。
    • 对不起,我对 iOS 开发和 spritekit 很陌生。你能举个例子说明你会怎么做吗?
    猜你喜欢
    • 2013-12-04
    • 2011-08-21
    • 1970-01-01
    • 1970-01-01
    • 2011-04-08
    • 2017-09-18
    • 2022-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多