gpt4 book ai didi

ios - 无法使用 physicsbody 设置位置

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

我已经摆弄这个话题大约三个月了。我以为这只是苹果很快会修复的一个临时错误,并将其推迟到开发结束。现在我的游戏快结束了,但我仍然找不到好的解决方法:

如果我有一个 SKShapeNode 并向其添加一个 physicsbody,我就不能再使用 setPosition:(CGPoint) 方法来更改位置。我的对象总是放置在其父 View 的 (0,0) 处。

我尝试在 didSimulatePhysics 方法中设置位置,以确保完成所有物理计算。

我尝试使用 SKActionsimilar 移动节点和其他建议questions here .没有一个按预期工作。

对我来说唯一(某种)可行的解决方案是使用这种变通方法:

- (void)setPositionWorkaround:(CGPoint)p {
CGVector vel = self.physicsBody.velocity;
CGFloat angVel = self.physicsBody.angularVelocity;
SKPhysicsBody *temp = self.physicsBody;
self.physicsBody = nil;

[self setPosition:p];
[self setPhysicsBody:temp];
[self.physicsBody setVelocity:vel];
[self.physicsBody setAngularVelocity:angVel];
}

奇怪的是,这个方法只工作一次。每次我调用这个方法时,位置都设置为第一个调用参数,即使初始调用没有留下任何数据。我检查了无数次参数和坐标系。

是否有人遇到了同样的问题并找到了可行的解决方案?

最佳答案

经过长时间摆弄这个问题,我终于找到了解决方案。

因此,由于对 SpriteKit 进行了相对较新的更新(3-4 个月前),我无法移动任何附加了 SKPhysicsBodySKNode 子类。 setPosition:(CGPoint)position[SKAction move…] 都不起作用。

在我的例子中,删除 SKPhysicsBody 并设置位置不起作用,因为出于性能原因,我使用了一个回收我的 SKShapeNode 的池。不过,池没有移除附加的 SKPhysicBodies

因此:如果您遇到此问题,请确保从节点和子节点中移除所有 SKPhysicBody 对象。

关于ios - 无法使用 physicsbody 设置位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35484692/

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