swift - 物理身体不只显示一个精灵?
问题描述
我遇到的问题是当我初始化我的精灵时,我有另一个精灵以相同的方式定义,并且那个精灵显示它有一个物理主体,因为我看到了绿色轮廓,但是下面的这个精灵上面没有绿色轮廓,我认为当我创建时存在问题,SKPhysicsBody
或者可能是因为我在随机位置创建了 13 个相同精灵的副本,如第二段代码所示。
@objc func CreateNewAsteroid() {
var asteroid : SKSpriteNode?
let moveAsteroidDown = SKAction.repeatForever(SKAction.moveBy(x: 0, y: -1, duration: 0.01))
let rotateAsteroid = SKAction.repeatForever(SKAction.rotate(byAngle: 25, duration: 5))
let asteroidXpos = randomNum(high: self.frame.size.width/2, low: -1 * self.frame.size.width/2)
let asteroidYpos = randomNum(high: 2.5*self.frame.size.height, low: self.frame.size.height/2)
let asteroidOrigin : CGPoint = CGPoint(x: asteroidXpos, y: asteroidYpos)
asteroid = SKSpriteNode(imageNamed: possibleAsteroidImage[Int(arc4random_uniform(4))])
asteroid?.scale(to: CGSize(width: player.size.height, height: player.size.height))
asteroid?.position = asteroidOrigin
asteroid?.run(moveAsteroidDown)
asteroid?.run(rotateAsteroid)
let asteroidRadius : CGFloat = (asteroid?.size.width)!/2
asteroid?.physicsBody? = SKPhysicsBody(rectangleOf: (asteroid?.size)!)
asteroid?.physicsBody?.categoryBitMask = asteroidCategory
asteroid?.physicsBody?.affectedByGravity = false
asteroid?.physicsBody?.isDynamic = false
asteroid?.physicsBody?.allowsRotation = false
asteroid?.physicsBody?.categoryBitMask = asteroidCategory
asteroid?.physicsBody?.collisionBitMask = 0
asteroid?.physicsBody?.contactTestBitMask = shipCategory
asteroidArray.append(asteroid!)
self.addChild(asteroid!)
}
我创建了 13 个这样的精灵
for _ in 0...13 {
CreateNewAsteroid()
}
解决方案
不要将 SKSpriteNode 小行星设为可选,而是将其设为非可选,这样它就不会通过删除?
in var asteroid : SKSpriteNode?
所以你想放var asteroid : SKSpriteNode
进行此更改后,会出现一些错误,告诉您删除一些!
's 和?
's(当然要确保删除这些)。
然后转到您的文件并在下面GameViewController.swift
添加行view.showsPhysics = true
view.showsNodeCount = true
完成后,您应该会在精灵周围看到一个绿色轮廓。
推荐阅读
- nlp - 如何从文本中提取rentprice?
- python - 根据文件名在python中读取多个图像
- python - 模块“matplotlib”没有属性“_get_configdir”
- matlab - 在 MatLab 上使用 ODE45 时,为初始 X 值和速率常数输入带有多个小数位的数字会导致错误消息
- amazon-web-services - AWS CodeBuild - 成功构建后将 yaml 文件复制到 S3
- java - 设置布局背景时,共享元素转换将无法正常工作
- html - 最大高度不会降低文本的高度
- excel - 将 ActiveX 文本框设置为空值后,先前的文本会短暂出现在框中,然后再次消失
- android - Wordpress 菜单在特定点被切断,Chrome for Android 浏览器似乎拒绝呈现它
- bash - GMT 命令行如何不能在一个目录中工作(但可以在所有其他目录中正常工作)?