gpt4 book ai didi

ios - SpriteKit 节点粘在场景边缘/不弹跳

转载 作者:IT王子 更新时间:2023-10-29 08:16:32 26 4
gpt4 key购买 nike

我已经搜索过这个,我认为一定有一些参数可以解决这个问题,但我还没有找到。

我在 SpriteKit 中有一个场景,我希望一些圆圈/球在周围反弹并无限期地保持它们的任何速度。它们应该从场景的边缘反弹。

如果它们移动得足够快,或者以相当锐利的角度撞击,这是有效的,但如果它们移动得更慢并且接近边缘平面,它们会继续移动(这很好)但它们“坚持“到边缘。这种坚持是我不想要的。即使走得很慢,它们也应该反弹。

为了设置边缘,我使用了:

SKPhysicsBody *borderBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody = borderBody;
self.physicsBody.friction = 0.0;
self.physicsBody.restitution = 1.0;
self.physicsBody.linerDamping = 0.0;
self.physicsBody.angularDamping = 0.0;
self.physicsBody.affectedByGravity = NO;

在圆节点上,我有类似的设置,比如:

ball.usesPresciseCollisionDetection = YES;
ball.dynamic = YES;
ball.restitution = 1.0;
ball.linearDamping = 0.0;
ball.angularDamping = 0.0;
ball.friction = 0.0;

我的场景中的重力为零。我向节点添加一个脉冲,它们开始弹跳——它看起来非常接近,因为东西会四处弹跳,但是如果有任何移动缓慢并以较小的角度进入,它们就会“拥抱”边缘。我将尝试在下面添加一个插图以帮助形象化。

http://i.imgur.com/Rpr7luY.png

我试过很多 PhysicsBody 设置,但无法让事情停止。

谢谢!

最佳答案

正如这些人所提到的,this answer 可以直观地被视为朝着正确方向迈出的一步,但问题出在整个 SpriteKit 物理引擎上。它是不确定的,分数会在计算中丢失,导致模拟不精确。

简短的回答是改用 Box2D。骇人听闻的答案是在相反的方向施加冲动。

All details are highlighted in my other answer .

@Jurik 很高兴我能帮上忙 :)

关于ios - SpriteKit 节点粘在场景边缘/不弹跳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24500851/

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