在SpriteKit中没有处理任何事情的恢复原状

时间:2017-08-07 11:58:18

标签: ios sprite-kit skspritenode restitution

我尝试过创建位掩码类别,将所有恢复原状值设置为1以及其他所有其他功能,包括运行应用程序和设备,但它仍然无法正常工作。设置一个带有retitution 1的SKSpriteNode以打击另一个skspritenode,并且在dx:100时恢复原状,它仍然没有反弹!这是我的GameScene.swift代码:

import SpriteKit
import GameplayKit

class GameScene: SKScene {

override func didMove(to view: SKView) {

    let Ball = SKSpriteNode()
    Ball.self.childNode(withName: "Ball")

    let playerPaddle = SKSpriteNode()
    playerPaddle.self.childNode(withName: "playerPaddle")

    let computerPaddle = SKSpriteNode()
    computerPaddle.self.childNode(withName: "computerPaddle")

    let ballCategory: UInt32 = 0x1 << 1
    let paddleCategory: UInt32 = 0x1 << 2
    let borderCategory: UInt32 = 0x1 << 3

    Ball.physicsBody?.categoryBitMask = ballCategory
    playerPaddle.physicsBody?.categoryBitMask = paddleCategory
    computerPaddle.physicsBody?.categoryBitMask = paddleCategory
    self.physicsBody?.categoryBitMask = borderCategory

    let playerScore = SKLabelNode()
    playerScore.fontName = "Pong Score"
    playerScore.text = "0"
    playerScore.fontSize = 100
    playerScore.color = SKColor.white
    playerScore.position = CGPoint(x: -200, y: 220)
    playerScore.zPosition = 3
    addChild(playerScore)

    let comScore = SKLabelNode()
    comScore.fontName = "Pong Score"
    comScore.text = "0"
    comScore.fontSize = 100
    comScore.color = SKColor.white
    comScore.position = CGPoint(x: 200, y: 220)
    comScore.zPosition = 3
    addChild(comScore)

    var comScoreInt: Int = Int(comScore.text!)!
    comScoreInt += 1
    comScore.text = String(comScoreInt)

    var playerScoreInt: Int = Int(playerScore.text!)!
    playerScoreInt += 1
    playerScore.text = String(playerScoreInt)

    let bodyBorder = SKPhysicsBody(edgeLoopFrom: self.frame)
    bodyBorder.friction = 0
    bodyBorder.restitution = 1
    self.physicsBody = bodyBorder
}
}

PS大多数物理都在GameScene.sks而不是GameScene.swift,但这是位掩码的地方。

编辑:

Ball Config;

位置x:0,y:0,z:0,

轮换:0,

尺寸:w:25,h:25,

锚点:x:0.5,y:0.5,

颜色:白色,

混合因子:0,

混合模式:alpha,

Alpha:1,

Ik约束:min:0,max:360,

比例:x:1,y:1,

物理

正文类型:边界矩形,

仅动态检查,

摩擦力:0,

归还:1,

Linuar Damp:0,

角度潮湿:0,

类别,碰撞和字段掩码:4294967295,

联系面具:0

初始速度:dx:100 dy:0

Paddles在物理方面是明智的 请帮助!

1 个答案:

答案 0 :(得分:0)

在GameScene.sks中应用Inital Velocity的Insead我改为在GameScene.swift中使用了一个力:Ball.physicsBody?.applyImpulse(CGVector(dx:50, dy:0))恢复原状开始工作