Ios 创建一个SKShapeNodes数组
我是快速发展的新手,我正在尝试创建一个简单的赛车游戏。游戏中的道路有车道标记,从屏幕顶部到底部设置动画,然后循环到顶部。我正在使用SKShapeNodes作为车道线标记 我已经能够让一个车道标记工作,现在我只需要创建一个车道标记数组(我想?),这样我就可以有两列车道,足够给游戏一个真实道路的错觉 我可以创建数组,但当我尝试向其中添加SKShapeNode时,会出现运行时错误。我得到的错误是: 线程1:Ios 创建一个SKShapeNodes数组,ios,swift,sprite-kit,Ios,Swift,Sprite Kit,我是快速发展的新手,我正在尝试创建一个简单的赛车游戏。游戏中的道路有车道标记,从屏幕顶部到底部设置动画,然后循环到顶部。我正在使用SKShapeNodes作为车道线标记 我已经能够让一个车道标记工作,现在我只需要创建一个车道标记数组(我想?),这样我就可以有两列车道,足够给游戏一个真实道路的错觉 我可以创建数组,但当我尝试向其中添加SKShapeNode时,会出现运行时错误。我得到的错误是: 线程1:EXC\u BAD\u指令(code=EXC\u I386\u INVOP,子代码=0x0) 以
EXC\u BAD\u指令(code=EXC\u I386\u INVOP,子代码=0x0)
以下是相关的源代码:
class PlayScene: SKScene {
let road = SKSpriteNode(imageNamed: "road8")
let car = SKSpriteNode(imageNamed: "car")
let laneLineNode = SKShapeNode()
var laneLineNodeArray = [[SKShapeNode]]()
var groundSpeed = 25
}
override func didMoveToView(view: SKView) {
//draw a lane line
var path = CGPathCreateMutable();
var laneLineWidth = self.size.width / 85
var laneLineHeight = self.size.height / 11
var laneLine = CGRect(x: ((self.frame.size.width / 5) * 2), y:
(self.frame.size.height + laneLineHeight),
width: laneLineWidth, height: laneLineHeight)
laneLineNode.lineWidth = 0
laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
laneLineNode.fillColor = SKColor.yellowColor()
laneLineNode.zPosition = 2
//THIS IS THE LINE I GET THE ERROR ON
laneLineNodeArray[0][0] = laneLineNode
self.addChild(self.road)
self.addChild(self.laneLineNode)
self.addChild(self.car)
}
override func update(currentTime: CFTimeInterval) {
//move the lane lines
scrollLaneLines(self.scene!)
}
}
谢谢你能给我的任何帮助。到目前为止,你已经创建了一个空数组。在按索引访问元素之前,请使用“append”将数据添加到数组中 首先。。。您使用以下代码过早关闭您的类:
var groundSpeed = 25
} // <--
谢谢大家!!我能让它在课堂游戏场景中发挥作用:
var laneLineNodeArray:[[SKShapeNode]] = []
在func didMoveToView中:
//draw a lane line
var path = CGPathCreateMutable();
var laneLineWidth = self.size.width / 85
var laneLineHeight = self.size.height / 11
var laneLine = CGRect(x: 0, y: (self.frame.size.height + laneLineHeight),
width: laneLineWidth, height: laneLineHeight)
var laneLineRowNumber: Int
var laneLineY: CGFloat
for r in 0...6 {
var laneLineRow:[LaneLine] = []
laneLineRowNumber = r
for c in 0...1 {
let laneLineNode = LaneLine()
laneLineNode.lineWidth = 0
laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
laneLineNode.fillColor = SKColor.yellowColor()
laneLineNode.zPosition = 2
//lanelineY determines the Y placement of the lane.
laneLineY = self.frame.size.height - (CGFloat((laneLineHeight) * 2)
* CGFloat(r))
if c == 0 {
laneLineNode.position = CGPointMake(laneWidth * 2, laneLineY)
}
else if c == 1 {
laneLineNode.position = CGPointMake(laneWidth * 3, laneLineY)
}
self.addChild(laneLineNode)
laneLineRow.append(laneLineNode)
}
laneLineNodeArray.append(laneLineRow)
}
var laneLineNodeArray:[[SKShapeNode]] = []
//draw a lane line
var path = CGPathCreateMutable();
var laneLineWidth = self.size.width / 85
var laneLineHeight = self.size.height / 11
var laneLine = CGRect(x: 0, y: (self.frame.size.height + laneLineHeight),
width: laneLineWidth, height: laneLineHeight)
var laneLineRowNumber: Int
var laneLineY: CGFloat
for r in 0...6 {
var laneLineRow:[LaneLine] = []
laneLineRowNumber = r
for c in 0...1 {
let laneLineNode = LaneLine()
laneLineNode.lineWidth = 0
laneLineNode.path = CGPathCreateWithRect(laneLine, nil)
laneLineNode.fillColor = SKColor.yellowColor()
laneLineNode.zPosition = 2
//lanelineY determines the Y placement of the lane.
laneLineY = self.frame.size.height - (CGFloat((laneLineHeight) * 2)
* CGFloat(r))
if c == 0 {
laneLineNode.position = CGPointMake(laneWidth * 2, laneLineY)
}
else if c == 1 {
laneLineNode.position = CGPointMake(laneWidth * 3, laneLineY)
}
self.addChild(laneLineNode)
laneLineRow.append(laneLineNode)
}
laneLineNodeArray.append(laneLineRow)
}