• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 无法使用物理体设置位置

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:34:30 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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

如果我有一个 SKShapeNode 并向其添加物理体,我不能再使用 setPositionCGPoint) 方法来更改位置。我的对象总是被放置在其父 View 的 (0,0) 处。

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

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

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

- (void)setPositionWorkaroundCGPoint)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];
}

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

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



Best Answer-推荐答案


在这个问题上折腾了很久,终于找到了解决办法。

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

在我的情况下,删除 SKPhysicsBody 并设置位置不起作用,因为出于性能原因,我使用了一个回收我的 SKShapeNode 的池。但是,池并没有删除附加的 SKPhysicBodies

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

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

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap