草庐IT

行星碰撞

全部标签

swift - 如何检测 Scenekit- iOS 中两个不同 .scn 文件的节点之间的碰撞?

我有两个不同的.scn文件,它们有两个不同的父节点和多个子节点。我已经实现了碰撞委托(delegate)方法并且它被正确调用。我的目的是仅当第二个.scn文件的任何子节点与第一个.scn文件的任何子节点或根节点发生冲突时才发现冲突,反之亦然。但是现在,由于在两个.scn文件中,所有子节点都紧密放置,这些代表总是被调用提供contact.nodeA和contact.nodeB作为两个子节点,它们从同一个.scn文件相互碰撞。是否只有当contact.nodeA来自不同的.scn文件(可以是任意子节点)和contact.nodeB来自不同的.scn文件(可以是任意子节点)时才可以检测碰撞?

swift - 如何在接触/碰撞时改变物理体形

我创建了一个具有圆形物理体的Sprite。我想在与另一个物体接触/碰撞时将圆形更改为矩形物理物体。我相信这应该在didBeginContact中完成。这是我到目前为止所做的ball.position=CGPointMake(self.frame.size.width/2,self.frame.size.height/2)self.addChild(ball)ball.physicsBody=SKPhysicsBody(circleOfRadius:ball.frame.size.width/2)ball.physicsBody?.friction=0ball.physicsBody?.

swift - 从两个对象检测 SpriteKit 上的碰撞

当我用大炮射击时,我在检测两个物体的碰撞时遇到了一些问题。目标是从中射出一颗子弹,并在它与障碍物碰撞后立即移除。似乎游戏中根本没有发生碰撞,因为我无法收到我设置的“碰撞”消息。看看下面的代码:classGameScene:SKScene,SKPhysicsContactDelegate{enumBodyType:UInt32{casebullet=1caseline=2casebreaker=4}我已经列举了组件,所以我可以将它们设置在类别位掩码中。之后,我在触摸开始时进行了拍摄设置。overridefunctouchesBegan(touches:Set,withEventevent

即使没有碰撞位掩码,swift skspritenode 也会发生碰撞

scorenode=SKSpriteNode()scorenode.size=CGSize(width:self.frame.width*0.2,height:1)scorenode.physicsBody=SKPhysicsBody(rectangleOf:scorenode.size)scorenode.color=.redscorenode.physicsBody?.affectedByGravity=falsescorenode.physicsBody?.isDynamic=falsescorenode.physicsBody?.categoryBitMask=PhysicsC

ios - SKSpriteNode 在碰撞时失去速度

我正在制作一个iOS应用程序,遇到了一些物理问题。正如您通过下面的.GIF可以看出的那样,当我旋转六边形并且球以一定角度撞击矩形时,它失去了一些速度并且不会反弹得那么高。这是因为共享的原因here(主要是因为我限制了球的水平位置,它只在击球角度时使用垂直速度,因此失去了速度)。我一辈子都想不出解决这个问题的方法。有人有什么想法吗??Ball节点代码:funccreateBallNode(ballColor:String)->SKSpriteNode{letball=SKSpriteNode(imageNamed:ballColor)ball.position=CGPoint(x:CGR

ios - SpriteKit 碰撞检测中 SKSpriteNodes 之间的间隙

我已经尝试解决这个问题很长一段时间了——我有一款游戏具有简单的平台游戏物理原理,其中玩家掉落到一个block上,从而阻止他掉落。这是可行的,但是玩家停止的位置与实际对象/Sprite节点所在的位置之间存在明显的差距。这是一个屏幕截图,它应该是不言自明的:classGameScene:SKScene{overrideinit(){super.init(size:UIScreen.mainScreen().bounds.size)self.physicsWorld.gravity=CGVector(dx:0,dy:-9.8)}requiredinit?(coderaDecoder:NSCo

ios - 在 Sprite Kit 中拖动一个对象与另一个对象碰撞时不会发生弹跳

Here是我遇到的问题的视频。正如您在视频中看到的那样,我移动了一个灰色的球,试图与一个红色的球碰撞。当两个物体碰撞时没有弹跳发生,红球只是移动。我试过调整红球的密度,比如让红球的密度为0.00001。碰撞行为没有差异。如何更改碰撞行为以产生弹跳?这是灰色球的属性:funcpropertiesGrayBall(){gray=SKShapeNode(circleOfRadius:frame.width/10)gray.physicsBody=SKPhysicsBody(circleOfRadius:frame.width/10)gray.physicsBody?.affectedByGr

ios - 检测 SceneKit 中粒子和节点之间的碰撞

我有几个具有运动学phyisicsBodyType的节点,我希望它与某些粒子系统交互,我的意思是我想检测碰撞并在节点与粒子系统中的nay粒子碰撞时执行一些代码.我找到了一种添加事件处理程序的方法,但我不太确定如何使用它(linktomethodhere)。谁能解释一下我如何使用该事件处理程序(最好是用Swift解释一下),或者你能给我另一个想法吗? 最佳答案 最后很简单。首先,您必须将节点数组分配给粒子系统的colliderNodes属性。之后,swift中的代码看起来像这样:particleSystem.handleEvent(S

ios - 在 Swift 中检测两个对象之间的碰撞

碰撞检测在Swift中非常简单-但在这个特定项目中,body碰撞不会触发didBeginContact事件如常。这是我的两具尸体碰撞list(使用士兵和子弹):添加SKPhysicsContactDelegate上课。适本地设置physicsWorld,通常是:self.physicsWorld.contactDelegate=self为您将拥有的每组节点创建类别。例如。letbulletCategory=0x1为每个子弹和士兵创建SKNode。给每颗子弹和士兵一个形状匹配的物理体。将每个项目符号的categoryBitMask设置为bulletCategory(士兵设置为士兵类别)。

sprite-kit - iOS SpriteKit - 碰撞和接触未按预期工作

关闭。这个问题需要detailsorclarity.它目前不接受答案。想改进这个问题吗?通过editingthispost添加细节并澄清问题.关闭6年前。Improvethisquestion有时在我的SpriteKit程序中,我的碰撞和接触(使用SKPhysicsBody)不会按预期触发或工作。我想我已经设置了我需要的一切,但我仍然没有得到正确的交互。是否有一些我可以编写的代码来检查什么会与什么发生碰撞,以及什么物体被设置为生成接触?