草庐IT

SKPhysicsBody

全部标签

ios - SpriteKit : One node with two physics body

一个节点有可能有两条物理体路径吗?我想创建一个节点,节点两侧有两个(圆形)物理体。如果不可能,是否有任何变通方法可以实现?谢谢 最佳答案 您想使用[SKPhysicsBodybodyWithBodies:...]。来自docs:Theshapesofthephysicsbodiespassedintothismethodareusedtocreateanewphysicsbodywhosecoveredareaistheunionoftheareasofitschildren.Theseareasdonotneedtobeconti

ios - bodyWithEdgeLoopF​​romRect 不能横向工作

我只是想在景观中设置一个基本场景,使用重力,并将场景置于边缘循环中。我设置了场景的物理体和mainCharacterSprite物理体,这是我的代码:-(id)initWithSize:(CGSize)size{if(self=[superinitWithSize:size]){self.backgroundColor=[SKColorredColor];[selfsetPhysicsBody:[SKPhysicsBodybodyWithEdgeLoopFromRect:[selfframe]]];}returnself;}-(void)setupMain{if(!self.mainC

ios - 子类化 SKSpriteNode 时物理体问题?

我在继承SKSpriteNode时遇到问题。这是我对子类的实现:@implementationSSSquirrel-(id)init{if(self=[superinit]){//CreateSquirrelandphysicsbodySKSpriteNode*squirrel=[SKSpriteNodespriteNodeWithImageNamed:@"squirrelNormal"];squirrel.physicsBody=[SKPhysicsBodybodyWithCircleOfRadius:squirrel.size.width/2-10];squirrel.physic

ios - 如何重新激活两个 physicsBody 之间的联系

我正在尝试获取两个已经相互接触的physicsBody(实际上它们重叠,因为physicBody.collisionCategory=0;对于两个physicsBody),以重新启动/重新注册/重新触发它们的接触,根据命令。即使我试图让body1在body2内移动一个像素以重新触发接触,我也无法做到这一点。我还删除了一个physicsBody并在几秒钟后重新实例化它以重新触发接触。但没有任何效果。当两个物体已经接触时,是否有某种方法或技术可以重新启动接触过程?所以,为了让事情更清楚一点:1)SpriteHuman走到SpritePanel上。2)-(void)didBeginConta

ios - 移动物理体 - didSimulatePhysics 与更新

在Spritekit游戏中使用物理体移动Sprite的最佳位置在哪里?我知道这两种方法每帧调用一次,首先更新然后didSimulatePhysics就在渲染View之前...当我们谈论Spritekit游戏时,在更新方法中应该做什么以及在didSimulatePhysics中做什么? 最佳答案 如果您正在寻找物理逻辑,例如在每次更新时检查碰撞和接触,例如单向平台无尽运行游戏,在这种情况下您必须检查碰撞并与每个正在运行的物理体接触,如果您是,请选择didSimulatePhysics如果只寻找移动的物理体而不接触和碰撞掩码,那么这两种

ios - 将 SKSpriteNode 掩蔽为液体

我想创建一个液体动力学。我搜索了很多,创建了随着设备运动而移动的球,但我不知道如何让球看起来像液体。我猜这是一些面具,但我没有找到如何去做。有人可以帮我吗?谢谢。 最佳答案 在游戏中看起来像液体的东西通常遵循以下模式(有很多方法可以做到这一点,使用滤镜、着色器、您自己的自定义opengl东西):很多球彼此相邻球具有alpha渐变。所以基本上,如果你在photoshop中用黑色在alphachannel上做一个径向渐变,你会得到一个非常模糊的球。或者只是在photoshop中画一个黑球并模糊它。你明白了。你很难对比(阈值)一切。实际上

ios - 如何防止 SKSpriteNode 的子节点与其父节点一起旋转?

我正在使用SpriteKit编写一个iOS游戏,其中包含许多带标签的球。我通过构建一个带有2个子节点的父SKSpriteNode来构建这些“rollingBalls”:a)一个SKShapeNode(实际的圆形)b)和一个SKLabelNode(标签)球将在整个屏幕上移动,在二维空间中与彼此和其他物体相互作用,并且完全取决于预期的物理特性(想想台球)。但如果可能的话,我希望标签不随父级一起旋转,以便始终保持易于阅读。最简单的方法是什么?标签不应该是容器的子元素吗?还有其他方法可以将它与ballShapeHook吗?或者我可以在标签上设置一些属性等吗?这是我现在得到的:doublebal

ios - SKPhysics : Made a rope, 为什么会坏?

我一直在尝试使用sprite套件,为我的想法构建原型(prototype)。我一直在使用SKPhysicsJointPin将一串物理体连接在一起,以制作一根绳子(实际上更像是自行车链条,但它已经足够好了)。场景中还有一些球,当我点击它们时,它们会掉落。这导致以下情况:但是,当我丢更多的球时,链条似乎无法处理它,并“断裂”:这是一个movieshowingthephenomenon这是怎么回事?该文档从不建议SKPhysicsJointPin具有有限的最大强度或弹性或类似物。这是sprite套件中的“错误”,还是我使用了错误的方法? 最佳答案

swift - 如何使物理脉冲在所有设备上移动相同百分比的屏幕

所以我想做的是让物理脉冲似乎对所有设备都有相同的效果。所以基本上,如果我能想出一种方法来执行以下操作,我就能够实现我的目标。首先让我们通过消除所有引力来简化事情。基本上,无论屏幕尺寸有多大,我都需要计算让屏幕最左侧的物理对象在相同的时间内到达屏幕最右侧所需的冲量。我问的原因是我正在制作一个基于滑动幅度和角度的运动系统。但是我希望它在每台设备上都以相同的方式播放。我正在计算幅度(距离(以虚拟点为单位))/(做手势所花费的时间)然后我将其用裁剪理脉冲。这是我正在使用的代码:funcJump(angle:CGFloat,strength:CGFloat){if(Ready==true){va

swift - 如何获得 SKSpriteNode 的 physicsBody 的轨迹?

如何获得移动的SKSpriteNode的轨迹(我将推导出一个点)?我会使用它的physicsBody.velocity值吗?或者我可以使用另一个变量吗?基本上,我试图获得移动节点将通过的几个点。谢谢! 最佳答案 如果您使用物理来移动它,您应该能够使用物理体的速度值加上它所连接的节点的位置。如果你想得到与速度矢量在同一直线上的点,你需要x位置和y位置,然后将t*velocity.dx添加到x位置,并将t*velocity.dy到y位置,其中t只是节点到达该点的任意时间。可能值得注意的是,这是节点的点速度。如果设置为在直线以外的路径(例