gpt4 book ai didi

ios - 设置永久 SKSpritenode 图像方向

转载 作者:行者123 更新时间:2023-12-01 17:39:19 26 4
gpt4 key购买 nike

嗨,我有一堆圆形的 SKSpriteNodes,有一个圆形的 body 。现在,当这些球滚下一条路径时,我希望其中一些 SKSpritenodes 图像即使在滚动时也能保持直立。所以想一个向上的箭头。当球开始滚动时,箭头会转圈。但是对于某些球来说,即使球滚动,我也希望箭头保持向上。这样做的最佳方法是什么?

编辑

所以给出了一个答案,但从测试结果证明它不是正确的。不允许球旋转会影响它沿路径滚动的方式。所以我想我想要的是旋转,但图像总是出现在用户面前,就像它不旋转一样。谢谢。

最佳答案

这看起来像是 Superm 的工作 SKConstraint .在物理模拟在每一帧上运行之后评估和应用约束,因此您可以将它们用于诸如使节点指向某个方向的任务,而不管物理对其做了什么。为此,您需要 zRotation约束。

但除此之外还有更多。如果在球上设置零旋转约束:

// Swift
let constraint = SKConstraint.zRotation(SKRange(constantValue: 0))
ball.constraints = [constraint]

你会发现 SpriteKit 由于约束而在每一帧重置物理体的变换,所以它的行为只是有点像它在滚动。可能不是你想要的。 (为了更好地了解这里发生了什么,尝试在没有重力的世界中为矩形物理体添加零旋转约束,对其施加角冲量,并观察它尝试在 showsPhysics 转动的 View 中旋转你会看到 Sprite 和它的物理体不同步并且有点晃动——可能是由于物理引擎和约束引擎对抗时累积的舍入误差。)

相反,您可以在 0x141E 的答案中做一些事情,但使用约束来减少代码(并更有效地运行):
  • 给球节点一个圆形物理体。 (并且可能没有纹理,如果您想要的球的唯一艺术是非旋转 Sprite 。)
  • 添加箭头节点作为球节点的子节点。 (它不需要自己的物理体。)
  • 在箭头上放置一个零旋转约束。

  • 等等,这不起作用——我告诉箭头不要旋转,但它仍然在旋转?!请记住,子节点相对于其父节点定位(并旋转和缩放)。所以箭头不是相对于球旋转,而是球在旋转。别担心,你仍然可以通过约束来解决这个问题:
  • 告诉约束相对于包含球的节点(可能是场景)进行操作。

  • 现在约束将使箭头保持在原位,同时允许球旋转,但物理模拟希望它旋转。

    这里有一些测试代码来说明:
    // Step 1: A rectangular spinner so we can see the rotation 
    // more easily than with a ball
    let spinner = SKSpriteNode(color: SKColor.redColor(), size: CGSize(width: 300, height: 20))
    spinner.position.x = scene.frame.midX
    spinner.position.y = scene.frame.midY
    spinner.physicsBody = SKPhysicsBody(rectangleOfSize: spinner.size)
    scene.addChild(spinner)
    spinner.physicsBody?.applyAngularImpulse(0.1) // wheeeeee

    // Step 2: Make the arrow a child of the spinner
    let arrow = SKSpriteNode(color: SKColor.greenColor(), size: CGSize(width: 20, height: 50))
    spinner.addChild(arrow)

    // Step 3: Constrain the arrow's rotation...
    let constraint = SKConstraint.zRotation(SKRange(constantValue: 0))
    arrow.constraints = [constraint]

    // Step 4: ...relative to the scene, instead of to its parent
    constraint.referenceNode = scene

    关于ios - 设置永久 SKSpritenode 图像方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26809288/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com