ios - Sprite 物理在 Swift (SpriteKit) 中出现但没有在视觉上显示
问题描述
我设置了精灵的物理体、zPosition、颜色、大小等,但它不会在视觉上出现。(它有我的精灵的最高 zPosition,是的,我确实导入了 SpriteKit)
let wall = SKSpriteNode()
wall.physicsBody?.velocity = CGVector(dx: 0, dy: 0)
//Takes screen size / width to make each piece one/(value set by "maze" at top) of the screen
let width: CGFloat = (UIScreen.main.bounds.width) / CGFloat(mazeSize)
let height: CGFloat = (UIScreen.main.bounds.height - 134) / CGFloat(mazeSize) //subtract so there's extra room on top+bottom of screen
wall.color = UIColor(ciColor: .black)
wall.isHidden = false
wall.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: width, height: height))
wall.physicsBody?.restitution = 0
wall.physicsBody?.friction = 0
wall.physicsBody?.isDynamic = false
wall.zPosition = 4
//sets up x+y location based on row count and which row this is on
//locations (ONLY positive)
let xLoc: CGFloat = ((UIScreen.main.bounds.width) / CGFloat((mazeSize/2))) * CGFloat(i/mazeSize)
let yLoc: CGFloat = ((UIScreen.main.bounds.height - 134) / CGFloat(mazeSize/2)) * CGFloat(i/mazeSize)
if((i/mazeSize) > (mazeSize/2)){ //if positive on x
wall.position.x = xLoc
}
else{ //if negative on x
wall.position.x = -xLoc
}
if(i > ((mazeSize^2)/2)){ //if positive on y
wall.position.x = yLoc
}
else{ //if negative on y
wall.position.y = yLoc
}
我正在使用它在迷宫中设置墙壁(是的,我知道 x+y 位置是错误的,但它们仍然“出现”在中间聚集),但只有这些节点的物理特性出现。有没有办法让这些黑墙出现?
解决方案
sprite 节点的几何形状和物理体的几何形状不必相关,在这种情况下,您已经制作了一个矩形物理体,基本上是一个空的 sprite 节点。尝试类似的东西
let wall = SKSpriteNode(color: .black, size: CGSize(width: 100, height: 100)
或使用SKSpriteNode(texture:)
初始化程序。
推荐阅读
- python-3.x - Selenium WebDriver 截图不捕获网页页脚
- angular - 插值不适用于点击方法
- image - 如何通过 http post 上传 QPixmap 图像?
- vb.net - VB.net Crystal 报表导出为 html 并使用 Outlook 作为 html 邮件正文发送
- sql - 如何根据月份参数值将数据从一年的开始月份拉到给定月份
- swift - 如何将 AttributedString 转换为 NSMutableString Swift?
- java - 当 jar 位于 zip 文件中时,如何过滤 jar 中的特定文件夹?
- javascript - 我可以将 jQuery UI 分类在文档上吗?
- python - 如何处理 HTTP 服务器中的多个请求?
- python - ImportError:没有名为 json 的模块