【问题标题】:Keeping Direction of a Vector Constant while Rotating Sprite旋转 Sprite 时保持矢量方向不变
【发布时间】:2015-11-15 15:48:08
【问题描述】:

我正在尝试制作一个游戏,其中精灵在被物体击中时总是会向右移动。然而,由于 Sprite 不断旋转并且零弧度随 Sprite 旋转,如果精灵面朝左并撞到对象,我计算的幅度会朝相反的方向移动。即使零向左,有没有办法保持幅度的方向始终指向右侧?

        // referencePoint = upper right corner of the frame 
        let rightTriangleFinalPoint:CGPoint = CGPoint(x: referencePoint.x, y: theSprite.position.y)

        let theSpriteToReferenceDistance = distanceBetweenCGPoints(theSprite.position, b: referencePoint)
        let theSpriteToFinalPointDistance = distanceBetweenCGPoints(theSprite.position, b: rightTriangleFinalPoint)
        let arcCosineValue = theSpriteToFinalPointDistance / theSpriteToReferenceDistance
        let angle = Double(acos(arcCosineValue))

        let xMagnitude = magnitude * cos(angle)
        let yMagnitude = (magnitude * sin(angle)) / 1.5

【问题讨论】:

  • 你是如何推动精灵的?是使用力、SKActions 还是其他方式?
  • 我正在使用 applyImpulse 来移动 Sprite @Gliderman

标签: ios vector sprite-kit game-physics skphysicsbody


【解决方案1】:

不确定这是否适合您: 我会使用方向约束来旋转精灵。在这种情况下,移动可以独立于方向进行。

我前段时间做了一个教程:http://stefansdevplayground.blogspot.de/2014/09/howto-implement-targeting-or-follow.html

【讨论】:

  • 酷我今晚去看看 thnx
【解决方案2】:

所以我弄清楚发生了什么。

看起来角度并没有像我最初想象的那样随着 Sprite 旋转,并且我正在制作的矢量正在使用上面的代码。我遇到的问题是我还为错误的对象设置了碰撞位。如果我只针对精灵设置对象的接触位,我想要的结果就会实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多