我尝试过创建位掩码类别,将所有恢复原状值设置为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在物理方面是明智的 请帮助!
答案 0 :(得分:0)
在GameScene.sks中应用Inital Velocity的Insead我改为在GameScene.swift中使用了一个力:Ball.physicsBody?.applyImpulse(CGVector(dx:50, dy:0))
恢复原状开始工作