저는 게임을 가지고 있으며 playScene에서 SKLabeleNode를 생성하는 함수를 만들었습니다. 이제는 장면에 노드를 추가하기 위해이 함수를 호출 할 수 있습니다. 노드가 장면에 추가되므로 다음 단계는 방금 장면에 추가 한 노드를 선택할 수 있어야합니다. /////////////////////////////////////////////////////////////////////////////////////////////// 이와 관련하여 문제가 있습니다 ////////////////////////////////touchBegan에서 노드를 선택할 수 없습니다
여기에서 앞서 만든 노드를 선택하고 함수에서 만든 SKLabelNode와 비교합니다. 함수에서 생성 한 노드가 처음 선택한 노드에 == 인 경우 처음에 선택한 노드를 제거해야합니다. 기능. 문제가 발생했습니다. 함수에서 생성 된 노드를 선택할 수 없습니다.
// 이건 내가 할 수있는 가장 작은 버전으로, GameScene 클래스 및 작업에 복사 할 수 있습니다. 및 SKSpriteNode (imageNamed : "B")
수입 SpriteKit 수입 재단 클래스 GameScene : SKScene {
var yellowColor = UIColor.yellowColor()
var redColor = UIColor.redColor()
let upperCaseA = SKSpriteNode(imageNamed: "A")
let upperCaseB = SKSpriteNode(imageNamed: "B")
var smallSizeLatter = CGSize()
var largeSizeLatter = CGSize()
var tempVarToHoldPlaceToMakeItRun = SKLabelNode(text: "A")
var latterADefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
var latterBDefaults: NSUserDefaults = NSUserDefaults.standardUserDefaults()
override func didMoveToView(view: (SKView!)) {
_ = NSTimer.scheduledTimerWithTimeInterval(1.0, target: self, selector: ("fallTheText"), userInfo: nil, repeats: true)
self.backgroundColor = UIColor.whiteColor()
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
smallSizeLatter = CGSize(width: 37, height: 37)
largeSizeLatter = CGSize(width: 54, height: 54)
upperCaseA.size = smallSizeLatter
upperCaseA.position = CGPoint(x: self.frame.width/8, y: self.frame.height * 0.75)
upperCaseB.size = smallSizeLatter
upperCaseB.position = CGPoint(x: self.frame.width/8, y: self.frame.height * 0.65)
self.addChild(upperCaseA)
self.addChild(upperCaseB)
}
func fallTheText(){
let theFallingText = SKLabelNode(text: "A")
let theLowerCaseLatter: [String] = ["a", "b",]
let textIndex = Int(arc4random_uniform(UInt32(2)))
let lowerCaseLatter = theLowerCaseLatter[textIndex]
theFallingText.text = lowerCaseLatter
theFallingText.name = lowerCaseLatter
print("the name is", theFallingText)
let colorListOfColors: [UIColor] = [yellowColor, redColor,]
let colorIndex = Int(arc4random_uniform(UInt32(2)))
let colorOfColors = colorListOfColors[colorIndex]
theFallingText.fontColor = colorOfColors
theFallingText.fontName = "HoeflerText-BlackItalic"
theFallingText.fontSize = 40
func randomRange (lower: UInt32 , upper: UInt32) -> UInt32 {
return lower + arc4random_uniform(upper - lower + 1)
}
let minValue = self.size.width/3
let maxValue = self.size.width - 50
let uppers = UInt32(maxValue)
let lowers = UInt32(minValue)
let spawnPoint = CGFloat(randomRange(lowers, upper: uppers))
theFallingText.position = CGPoint(x: spawnPoint, y: self.size.height * 0.85)
let actionY = SKAction.moveToY(-30, duration: 20)
theFallingText.runAction(SKAction.repeatActionForever(actionY))
self.addChild(theFallingText)
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
for touch: AnyObject in touches{
let positionOfTouch = touch.locationInNode(self)
let nodeAtLocation = self.nodeAtPoint(positionOfTouch)
if nodeAtLocation == upperCaseA {
if latterADefaults.boolForKey("latterADefaultsKey"){
upperCaseA.size = largeSizeLatter
latterADefaults.setBool(false, forKey: "latterADefaultsKey")
upperCaseB.size = smallSizeLatter
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
}else{
upperCaseA.size = smallSizeLatter
upperCaseB.size = smallSizeLatter
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
}
}
: 수행해야합니다 // 유일한 것은 SKSpriteNode ("A"imageNamed를) MAKE입니다 나는 IT가 RUN하려면이 TEMP에 노드를 추가 한자는 어디에 문제 ////////
는 여기 /////////
if nodeAtLocation == tempVarToHoldPlaceToMakeItRun{
if tempVarToHoldPlaceToMakeItRun.text == "yellow"{
print("danny", tempVarToHoldPlaceToMakeItRun.name)
if upperCaseA.size == largeSizeLatter{
tempVarToHoldPlaceToMakeItRun.removeFromParent()
upperCaseA.size = smallSizeLatter
}
}
}
if nodeAtLocation == upperCaseB {
if latterBDefaults.boolForKey("latterBDefaultsKey"){
upperCaseA.size = smallSizeLatter
latterADefaults.setBool(true, forKey: "latterADefaultsKey")
upperCaseB.size = largeSizeLatter
latterBDefaults.setBool(false, forKey: "latterBDefaultsKey")
}else{
upperCaseB.size = smallSizeLatter
latterBDefaults.setBool(true, forKey: "latterBDefaultsKey")
}
}
}
}
}
이 노드를 어떻게 비교하여 비교할 수 있습니까? 운이없는 SKLabelNode를 반환하는 함수를 변경했습니다. 반환 값이없는 함수를 사용하려고했습니다. NSTimer를 제거하고 함수를 행운과 함께 self.addChild (fallTheText)로 추가했습니다. 함수에서 생성 된 SKLabelNode가 모든 경우에 장면 아래로 흐르고 있습니다. 이제 비교하려고 할 때 첫 번째 노드를 건 드리면 반응하지만 노드가 함수에서 새 노드를 추가합니다. 함수에 의해 생성 된 하강 노드를 선택하려고하면 함수에서 더 많은 노드를 계속 추가하고 떨어지는 노드를 선택하지 않습니다.
목표는 무작위로 떨어지는 후자이며 고정 된 이미지 인 '만졌을 때 크기가 조정됩니다'를 비교 한 다음 타락한 텐트 편지를 제거합니다.
아마도 충돌 감지를 추가 하시겠습니까? – rakeshbs