gpt4 book ai didi

ios - SKPhysicsJoints 可以用于滚动的 SpriteKit 游戏吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:00:28 25 4
gpt4 key购买 nike

这似乎是 Apple 的一个重大疏忽,但由于 SKPhysicsJoints 在场景坐标中设置了 anchor ,这使得无法进行任何类型的滚动游戏。

要在 SpriteKit 中模拟摄像机,您需要创建一个包含所有游戏元素的 WorldNode,然后将其平移到场景中。不幸的是,这样做会导致游戏中每个对象的场景坐标在您平移世界时在每一帧上发生变化。反过来,这会破坏关节 anchor ,事情会变得疯狂。

甚至没有办法改变关节的 anchor ,所以我什至没有办法在每一帧更新坐标。在滚动游戏中使用 SKPhysicsJoint 似乎不是一种选择。

有人知道解决这个问题的方法吗?

最佳答案

好吧,我想我明白是怎么回事了,我原来的假设是完全错误的。我的 anchor 看起来不正确的原因是 [convertPoint toNode] 调用返回给我的场景坐标不正确。几个小时后,我意识到它恰好缩小了屏幕尺寸的一半。我的场景的 anchor 为 (0.5, 0.5),但这搞砸了转换值。所以,如果我简单地用 width/2, height/2 偏移点,它是正确的:

GPoint pt = CGPointMake(anchorWorldX, anchorWorldY);
pt = [gGameScene convertPoint:pt fromNode:gGameWorld]; // convert to scene coords, but it's WRONG

pt.x += scene.size.width * scene.anchorPoint.x; // this properly adjusts the value to be correct
pt.y += scene.size.height * scene.anchorPoint.y;

SKPhysicsJointPin* pin =[SKPhysicsJointPin jointWithBodyA:hinge.physicsBody bodyB:door.physicsBody anchor:pt];

关于ios - SKPhysicsJoints 可以用于滚动的 SpriteKit 游戏吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24661940/

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