swift - 我如何在 spritekit Swift 中的碰撞中更改我的 spritekit

标签 swift

如何在 spritekit swift 中更改碰撞时的 spritekit。

        else if collidedBird.birdType == 6 {
            if UIDevice.currentDevice().userInterfaceIdiom == .Pad
            {
                _bird.physicsBody?.applyImpulse(CGVectorMake(0, birdImpluseReturn(70.0)))
            } else {
                _bird.physicsBody?.applyImpulse(CGVectorMake(0, birdImpluseReturn(70.0)))
            }
            let fire = NSTimer.scheduledTimerWithTimeInterval(0.05, target: self, selector: Selector("createDragonFire"), userInfo: nil, repeats: false)
            playEffectSound("BS_Std_Jump_SFX.mp3")
            _platform.removeFromParent()
        }

最佳答案

如果你想改变Sprite的图像,那么你应该使用SKPhysicsContactDelegate方法。

一般来说,这意味着您必须实现SKPhysicsContactDelegate,创建一个新的结构:

例如:

struct PhysicCategories {
        static let NoneC : UInt32 = 0x1 << 0
        static let Bird : UInt32 = 0x1 << 1
        static let PlatformC : UInt32 = 0x1 << 2
        static let FinishC : UInt32 = 0x1 << 3
        static let ObstacleC : UInt32 = 0x1 << 4
    } 

然后进入您的didMoveToView()函数并写入:

PhysicsWorld.contactdelegate = self

Dont forget to make this Step!

然后添加函数

func didBeginContact(contact: SKPhysicsContact) {

        var contactbody1 = contact.bodyA
        var contactbody2 = contact.bodyB


        if contactbody1.categoryBitMask < contactbody2.categoryBitMask{

            contactbody1 = contact.bodyA
            contactbody2 = contact.bodyB


        } else {

            contactbody1 = contact.bodyB
            contactbody2 = contact.bodyA

        }

        if ((contactbody1.categoryBitMask == PhysicCategories.BirdC) && (contactbody2.categoryBitMask == PhysicCategories.ObstacleC)){
            // Make a GameOver Function for that!
            // GameOver()


        }
        if ((contactbody1.categoryBitMask == PhysicCategories.BirdC) && (contactbody2.categoryBitMask == PhysicCategories.PlatformC)){

            contactbody1.node.texture = SKTexture(imageNamed: "")



        }

关于swift - 我如何在 spritekit Swift 中的碰撞中更改我的 spritekit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31293091/

相关文章:

swift - NSPageController,如果animator()处使用了selectedIndex,autoresizingMask没有效果

ios - 在 tableview 单元格内单击更改按钮

swift - google maps iOS swift 中的自定义标记 InfoWindow?

objective-c - jsqmessageviewcontroller 中 customMediaItem 的边距

swift - 类型(: ) in Swift 3 does not seem to work with the is type check

ios - 为什么我的 UIButton 的背景层会出现动画,我该如何停止它?

xcode - 让 OS X Swift 应用程序在后台运行

json - 如何使用 Swift 4.2 解决 JSON 可解码错误异常?

ios - 如何为 sprite kit 节点组合图像

arrays - 使用元组和 3 个 UIPickerview 计算小计