충돌 확인 문제

매진

이 코드는 사용자가 텍스처를 임의로 변경하는 공과 같은 텍스처의 공을 탭했는지 확인합니다. 그러나 내 콘솔에서 "Point"는 무작위로 질감을 바꾸는 공과 같은 질감의 공을 두드려도 가끔 인쇄됩니다. 이 문제를 어떻게 해결할 수 있습니까? 다른 공에 physicsBody를 추가하는 것과 관련이 있습니까?

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    var array = [blueTexture, redTexture, greenTexture, yellowTexture]// var with value of textures

    var blackB = childNodeWithName("changeBall") as! SKSpriteNode

    let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
    blackB.texture = array[randomIndex] // blackB is given a random texture 

    for t in touches { // check each touch

        let touch = t as! UITouch
        let pos = touch.locationInNode(self) // find touch position

        for child in self.children { // check each children in scene
            if let ball = child as? SKSpriteNode{ 
                if ball !== blackB && ball.containsPoint(pos) { // check for collision, but skip if it's a blackB
                    if ball.texture == blackB.texture { // collision found, check color
                        println("POINT")
                    }
                }
            }
        }
    }


}
0x141E

일부 관찰 ...

  1. nodeAtPoint(pos)for자식 노드 루프를 대체 할 수 있습니다.
  2. ball.containsPoint(pos)nodeAtPoint동일한 테스트를 수행 하므로 필요하지 않습니다.
  3. ball !== blackB 해야한다 ball != blackB
  4. 텍스처 일치를 확인한 후 임의의 텍스처로 변경하는 것이 더 합리적 일 수 있습니다.

위의 변경 사항이 적용된 구현

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) {

    var array = [blueTexture, redTexture, greenTexture, yellowTexture]
    var blackB = childNodeWithName("changeBall") as! SKSpriteNode

    if let touch = touches.first as? UITouch {
        let pos = touch.locationInNode(self)
        if let ball = nodeAtPoint(pos) as? SKSpriteNode {
            if ball != blackB && ball.texture == blackB.texture {
                println("POINT")
            }
        }
    }
    // Change texture after checking for a texture match
    let randomIndex = Int(arc4random_uniform(UInt32(array.count)))
    blackB.texture = array[randomIndex]
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

기본적인 충돌 문제

분류에서Dev

충돌로 인한 removeAt () 문제

분류에서Dev

입력 문자열이 버퍼 제한을 초과하는지 확인 (충돌)

분류에서Dev

Flashpunk 충돌 문제

분류에서Dev

다중 If 문-한 번만 플레이어 충돌 확인

분류에서Dev

MPMediaItemPropertyArtwork로 인해 충돌이 발생 함 (이상한 문제)

분류에서Dev

+ [NSDecimalNumber gad_negativeOne]으로 인한 앱 충돌 : 문제?

분류에서Dev

OpenGL / SDL 문제로 인해 시작시 밸브 게임 충돌

분류에서Dev

Spritekit 게임 충돌 (SKLightNode 스레딩 문제로 인해?)

분류에서Dev

메모리 문제로 인해 UIImage로드시 iOS 앱 충돌

분류에서Dev

Jquery 문 충돌

분류에서Dev

충돌 감지 문제

분류에서Dev

newtonsoft json deserializing 문제 (충돌)

분류에서Dev

Ubuntu 13.10 : VirtualBox 충돌 문제

분류에서Dev

충돌하는 Jquery 문제

분류에서Dev

SSD Windows 10 충돌 문제

분류에서Dev

Swift SKPhysicsBody 충돌 문제

분류에서Dev

C ++ 문제 : 충돌 선언

분류에서Dev

jQuery ajax 충돌 문제

분류에서Dev

지형 충돌 문제

분류에서Dev

Apache 구성 문제 / 충돌 (?)

분류에서Dev

ABRecordCopyCompositeName 및 CFBridgingRelease 충돌 문제

분류에서Dev

Ubuntu 13.10 : VirtualBox 충돌 문제

분류에서Dev

awk 및 인용 변수에서 bash 배열 사용 : 구문 충돌 문제

분류에서Dev

NSMutableAttributedString에서 특수 문자를 확인하기 위해 충돌에 직면

분류에서Dev

"INSERT 문이 FOREIGN KEY와 충돌"을 유발 한 행을 확인하십시오.

분류에서Dev

시간표 문제로 인한 일정 충돌을 피하는 방법

분류에서Dev

강조 표시 문제로 인해 UICollectionView가 무작위로 충돌합니다.

분류에서Dev

신호 및 슬롯 연결 문제로 인해 코드가 충돌합니다.

Related 관련 기사

뜨겁다태그

보관