美文网首页
iFIERO -- 如何精确设置SpriteKit精灵的物理体P

iFIERO -- 如何精确设置SpriteKit精灵的物理体P

作者: 布袋的世界 | 来源:发表于2018-06-20 18:22 被阅读17次

    如何精确设置SpriteKit精灵的物理体PhysicsBody ,首先要开启精灵的物理体外框显示,
    可以直观的在模拟器或者真机上看清楚精灵的物理体外观(精灵周围有一圈兰色的细线)!

    精灵周围有一圈兰色的细线 开启精灵的物理体外框显示 精灵物理体 精灵物理体脚+手 在Scene中的尺寸大小 直接使用rectangleOf 碰撞不精准 碰撞不精准 使用texture为物理体,反重力向上时 物理体脚还在走动,导致碰撞到天空后站立不稳 四处漂浮

    如何解决这个问题呢?就是自定义物理体texture

    自定义物理体texture 脚的底部采用底座形式 去除物理体脚还有手 精确站立 精确碰撞

    以下是PlayerNode的代码

    // MARK:-玩家
        func initPlayer(){
            /// Ninja.atlas名称 (位于目录Resources->Images)
            playerTextureAtlas = SKTextureAtlas(named: "Ninja")
            /// 把atlas里的图片append到PlayerTextures数组内
            for i in 1...playerTextureAtlas.textureNames.count {
                let imageName = "t1000\(i)"
                playerTextures.append(SKTexture(imageNamed: imageName))
            }
            /// 节点的物理特性
            /// 1.调用rectangleOf矩形物理外框
            /// self.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: self.size.width, height: self.size.height))
            ///2.调用物理体本身的图片 因为头重脚轻 上升到顶部时导致站不稳;
            //        self.physicsBody =  SKPhysicsBody(texture: SKTexture(imageNamed: "t10001"), size:CGSize(width: SKTexture(imageNamed: "t10001").size().width * 0.7, height: SKTexture(imageNamed: "t10001").size().height * 0.7))
            ///3.精确定制物理体t1Mask
            let playerMask = SKTexture(imageNamed: "t1Mask")
            self.physicsBody = SKPhysicsBody(texture: playerMask, size:  CGSize(width: playerMask.size().width * 0.7, height: playerMask.size().height * 0.7)) /// 0.7 的意思是缩小0.7倍
            self.physicsBody?.restitution = 0  // bounciness物体落下时反弹跳力不会消减
            self.physicsBody?.categoryBitMask    = PhysicsCategory.Player
            self.physicsBody?.contactTestBitMask = PhysicsCategory.Bomb | PhysicsCategory.Coin | PhysicsCategory.SkyLine | PhysicsCategory.GroudLine
            self.physicsBody?.collisionBitMask   = PhysicsCategory.GroudLine | PhysicsCategory.SkyLine
            
        }
        
    

    完整游戏代码传送门:https://github.com/apiapia/SkyNinjaGameSpriteKitTutorial
    更多详情游戏教程请查看:http://www.iFIERO.com

    相关文章

      网友评论

          本文标题:iFIERO -- 如何精确设置SpriteKit精灵的物理体P

          本文链接:https://www.haomeiwen.com/subject/ibwxyftx.html