SKPhysicsBody 적용 후 SKPhysicsBody 충돌 감지

ngngng

다음과 같은 기능을하는 간단한 게임 플레이가 있습니다.

여기에 이미지 설명 입력

내 목표는 공이 흰색 부분에 닿을 때 (게임 오버 장면이로드 됨) 또는 공이 회색 부분에 닿을 때 (게임이 계속됨) 감지하는 것입니다.

모양이 줄어들고 많은 일이 진행되기 때문에 필자는 필요할 때 SKPhysicsBody를 생성 한 다음 충돌 검사가 발생한 후 제거하는 것이 훨씬 더 효율적이라고 생각했습니다. 따라서 화면을 클릭하면 다음과 같은 일이 발생합니다. (원이 축소되는 데 걸리는 5 * 0.0325 초 후) 회색과 흰색 부분 모두에 물리 몸체를 추가하여 공이 무엇인지 감지 할 수 있습니다. 감동)

DispatchQueue.main.asyncAfter(deadline: .now() + seconds, execute: {
        let trackPhysics = SKPhysicsBody(texture: track.texture!, size: track.texture!.size())
        trackPhysics.isDynamic = false
        trackPhysics.affectedByGravity = false
        track.physicsBody = trackPhysics

        let goalPhysics = SKPhysicsBody(texture: goal.texture!, size: goal.texture!.size())
        goalPhysics.isDynamic = false
        goalPhysics.affectedByGravity = false
        goal.physicsBody = goalPhysics
    })

작동합니다. SKPhysicsBody는 프레임 속도 손실없이 회색과 흰색 부분에 완벽하게 적용되며 회전을 따릅니다. 문제는 ... 공이 닿는 것을 어떻게 감지합니까? 공식적으로 충돌하지 않았기 때문에 충돌을 전혀 호출하지 않습니다 (실제로 충돌하지 않았기 때문에 의미가 있음).

이것이 기본 논리이며 결과를 확인하고 싶을 때까지 완벽하게 작동합니다.

  1. 누군가가 화면을 터치
  2. 원 축소
  3. 축소 직후 텍스처를 기반으로 회색 및 흰색 부분 모두에 대해 SKPhysicsBody를 생성합니다.
  4. 문제가 있습니다 ... 공이 닿는 것을 어떻게 감지합니까?

나는 이것을 시도했다 :

    func didBegin(_ contact: SKPhysicsContact) {
        print("touching!")
    }

    func didEnd(_ contact: SKPhysicsContact) {
        print("not touching")
    }

메시지가 전혀없고 SKPhysicsBody가 적용된 후 1 초 후에 allContactedBodies () 사용을 시도했지만 모두 0으로 카운트를 반환합니다. 나는 이것을 5 초 동안 시도했지만 여전히 작동하지 않습니다.

DispatchQueue.main.asyncAfter(deadline: .now() + seconds + 1, execute: {
        print(track.physicsBody!.allContactedBodies().count)
        print(goal.physicsBody!.allContactedBodies().count)
    })

SKPhysicsBody가 적용된 모습입니다. 물리가 완벽하게 적용된 것을 확인할 수 있습니다.

여기에 이미지 설명 입력

내가 뭘 잘못하고 있니? 어떤 아이디어?

Nathangitter

위의 주석에서 발견 된 솔루션은 다음과 같습니다.

  1. 충돌 감지가 제대로 작동하려면 isDynamic노드 속성을로 설정하십시오 true.
  2. didBegin(contact:)장면 physicsWorld.contactDelegate이 설정 되었는지 다시 확인하여 호출되고 있는지 확인합니다 .
  3. 마스크와 물리 몸체가 적절한 시간과 위치에 설정되었는지 확인합니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

SKPhysicsBody 충돌 방지 Swift / SpriteKit

분류에서Dev

Swift SKPhysicsBody 충돌 문제

분류에서Dev

SKPhysicsBody 개체 충돌이 정렬되지 않습니다.

분류에서Dev

SKPhysicsBody 개체 충돌이 정렬되지 않습니다.

분류에서Dev

ios8 작업 중 ios7에서 Spritekit SKPhysicsBody 충돌

분류에서Dev

두 SKPhysicsBody 객체 사이에 SKPhysicsJoint를 생성하면 둘 사이의 충돌 감지가 비활성화됩니까?

분류에서Dev

베 지어 곡선에 SKPhysicsBody를 적용하는 방법은 무엇입니까?

분류에서Dev

Resizing a SpriteKit SKPhysicsBody created with SKPhysicsBody(circleOfRadius:)

분류에서Dev

Resizing a SpriteKit SKPhysicsBody created with SKPhysicsBody(circleOfRadius:)

분류에서Dev

SKPhysicsBody 구성?

분류에서Dev

SKPhysicsBody uses only part of SKTexture

분류에서Dev

SKPhysicsBody의 .dynamic 속성

분류에서Dev

액션으로 SKPhysicsBody를 역동적으로 만들기

분류에서Dev

Swift를 사용하여 타원 SKPhysicsBody를 만드는 방법

분류에서Dev

스프라이트 이미지 내에서 SKPhysicsBody 이동

분류에서Dev

SKPhysicsBody 격리 테스트?

분류에서Dev

충돌을 효율적으로 감지

분류에서Dev

Intersects ()를 사용한 XNA 충돌 감지

분류에서Dev

SKPhysicsBody (circleOfRadius :)로 만든 SpriteKit SKPhysicsBody 크기 조정

분류에서Dev

충돌 감지 후 움직임이 멈춤-파이 게임

분류에서Dev

MovieClip이 제거 된 후 충돌이 감지되었습니다.

분류에서Dev

충돌 감지 후 최종 화면 표시

분류에서Dev

BabylonJS : 충돌 감지

분류에서Dev

AndEngine 충돌 감지

분류에서Dev

ImageView 충돌 감지

분류에서Dev

SKPhysicsBody가 예상과 다릅니다.

분류에서Dev

SKPhysicsBody를 어떻게 파괴합니까?

분류에서Dev

popToRootViewControllerAnimated 후 충돌

분류에서Dev

큰 for 루프, 적용 또는 foreach 후 R 충돌

Related 관련 기사

  1. 1

    SKPhysicsBody 충돌 방지 Swift / SpriteKit

  2. 2

    Swift SKPhysicsBody 충돌 문제

  3. 3

    SKPhysicsBody 개체 충돌이 정렬되지 않습니다.

  4. 4

    SKPhysicsBody 개체 충돌이 정렬되지 않습니다.

  5. 5

    ios8 작업 중 ios7에서 Spritekit SKPhysicsBody 충돌

  6. 6

    두 SKPhysicsBody 객체 사이에 SKPhysicsJoint를 생성하면 둘 사이의 충돌 감지가 비활성화됩니까?

  7. 7

    베 지어 곡선에 SKPhysicsBody를 적용하는 방법은 무엇입니까?

  8. 8

    Resizing a SpriteKit SKPhysicsBody created with SKPhysicsBody(circleOfRadius:)

  9. 9

    Resizing a SpriteKit SKPhysicsBody created with SKPhysicsBody(circleOfRadius:)

  10. 10

    SKPhysicsBody 구성?

  11. 11

    SKPhysicsBody uses only part of SKTexture

  12. 12

    SKPhysicsBody의 .dynamic 속성

  13. 13

    액션으로 SKPhysicsBody를 역동적으로 만들기

  14. 14

    Swift를 사용하여 타원 SKPhysicsBody를 만드는 방법

  15. 15

    스프라이트 이미지 내에서 SKPhysicsBody 이동

  16. 16

    SKPhysicsBody 격리 테스트?

  17. 17

    충돌을 효율적으로 감지

  18. 18

    Intersects ()를 사용한 XNA 충돌 감지

  19. 19

    SKPhysicsBody (circleOfRadius :)로 만든 SpriteKit SKPhysicsBody 크기 조정

  20. 20

    충돌 감지 후 움직임이 멈춤-파이 게임

  21. 21

    MovieClip이 제거 된 후 충돌이 감지되었습니다.

  22. 22

    충돌 감지 후 최종 화면 표시

  23. 23

    BabylonJS : 충돌 감지

  24. 24

    AndEngine 충돌 감지

  25. 25

    ImageView 충돌 감지

  26. 26

    SKPhysicsBody가 예상과 다릅니다.

  27. 27

    SKPhysicsBody를 어떻게 파괴합니까?

  28. 28

    popToRootViewControllerAnimated 후 충돌

  29. 29

    큰 for 루프, 적용 또는 foreach 후 R 충돌

뜨겁다태그

보관