gpt4 book ai didi

ios - SpriteKit PhysicsWorld 坐标系,怪异的运行时联合 anchor

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

这里有两个可能相关的事情:

1) 我可以使用 self、self.scene 和 myWorld 从我的 SKScene impelmentation 文件中绘制一个框并添加到子项,但不能使用 SKSprite 节点的场景属性。

SKSpriteNode *bla = [SKSpriteNode spriteNodeWithColor:[UIColor redColor] size:CGSizeMake(100, 100)];
[self.scene addChild:bla]; // If I use bla.scene, it doesn't work. self, self.scene, myworld all do work though.
bla.position = CGPointMake(0, 0);
bla.zPosition = 999;

2)看到相关问题herehere ,但我试图在游戏过程中添加一个关节(捕获绳子)。在 didBeginContact 中进行一些排序后调用此方法:

-(void)monkey:(SKPhysicsBody *)monkeyPhysicsBody didCollideWithRope:(SKPhysicsBody *)ropePhysicsBody atPoint:(CGPoint)contactPoint
{
if (monkeyPhysicsBody.joints.count == 0) {
// Create a new joint between the player and the rope segment
CGPoint convertedRopePosition = [self.scene convertPoint:ropePhysicsBody.node.position fromNode:ropePhysicsBody.node.parent];
SKPhysicsJointPin *jointPin = [SKPhysicsJointPin jointWithBodyA:playerPhysicsBody bodyB:ropePhysicsBody anchor:convertedRopePosition];
jointPin.upperAngleLimit = M_PI/4;
jointPin.shouldEnableLimits = YES;
[self.scene.physicsWorld addJoint:jointPin];
}
}

我在场景中启用了 showPhyscs,所以我可以看到关节最终处于一个完全古怪的地方。不幸的是,我不知道如何应用链接的解决方案,因为我没有在此方法中添加 SKSpriteNodes,它们已经存在,所以我不能只翻转 position 的顺序physicsBody

我已经为这两种 convertPoint 方法尝试了所有可能的排列。没有任何效果。我最好的猜测是 physicsWorld 使用了一些古怪的坐标系。

最佳答案

与位置 (CGPoint) 或框架 (CGRect) 相关的 SKPhysicsWorld 方法成员将在场景坐标中。场景坐标将点 {0,0} 引用为左下角,并且在整个 SpriteKit 中保持一致。

bla 对象的 scene 属性在 bla 首先创建并在添加到场景时由场景设置。

[bla.scene addChild:bla]; // this won't do anything as scene will be nil when first created

看起来 convertedRopePosition 被分配了一个不正确的值,因为您传递给第二个成员,- (CGPoint)convertPoint:(CGPoint)point fromNode:(SKNode *) node ,就是应该是和这个节点在同一个节点树中的另外一个节点的场景。其中 this node 是调用者(在本例中是 SKScene 子类)。

尝试更换行-

CGPoint convertedRopePosition = [self.scene convertPoint:ropePhysicsBody.node.position fromNode:ropePhysicsBody.node.parent];

与-

CGPoint convertedRopePosition = [self convertPoint:ropePhysicsBody.node.position fromNode:ropePhysicsBody.node];

关于ios - SpriteKit PhysicsWorld 坐标系,怪异的运行时联合 anchor ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27199200/

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