물리학없이 충돌을 감지하는 방법

포도 1

didBeginContact () 함수를 사용하지 않고 두 시체가 접촉 할 때 감지하고 싶습니다.

나는 효과없이 CGRectIntersectsRect ()로 시도합니다.

class GameScene: SKScene, SKPhysicsContactDelegate {

    // Player
    var _player = SKNode()
    var platform = SKNode()

    let heroCategory: UInt32 = 1 << 0
    let platformCategory: UInt32 = 1 << 1

    override func didMoveToView(view: SKView) {

        /* Setup your scene here */

        // Setup
        self.anchorPoint = CGPointMake(0.5, 0.5)
        self.physicsWorld.gravity = CGVectorMake(0.0, -2.0);
        self.physicsWorld.contactDelegate = self

        // Start populating
        _player = creatPlayer()
        self.addChild(_player)

        platform = creatPlatform(1, atPosition: CGPoint(x: 0, y: -200))
        self.addChild(platform)


        let platformTwo = creatPlatform(2, atPosition: CGPoint(x: 0, y: 200))
        self.addChild(platformTwo)

    }

    func creatPlatform(type: Int, atPosition: CGPoint) -> PlatformNode {

        let node = PlatformNode()
        node.platformType = type
        node.position = atPosition
        let sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 200, height: 50))
        node.addChild(sprite)

        node.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size)
        node.physicsBody?.dynamic = false;
        node.physicsBody?.categoryBitMask = platformCategory
        node.physicsBody?.contactTestBitMask = heroCategory
        node.physicsBody?.collisionBitMask = 0;

        return node

    }

    func creatPlayer() -> SKNode {

        let playerNode = SKNode()
        let sprite = SKSpriteNode(color: UIColor.whiteColor(), size: CGSize(width: 50, height: 50))
        playerNode.addChild(sprite)

        playerNode.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size)
        playerNode.physicsBody?.dynamic = false
        playerNode.physicsBody?.allowsRotation = false
        playerNode.physicsBody?.restitution = 1.0
        playerNode.physicsBody?.friction = 0.0
        playerNode.physicsBody?.angularDamping = 0.0
        playerNode.physicsBody?.linearDamping = 0.0
        playerNode.physicsBody?.categoryBitMask = heroCategory
        playerNode.physicsBody?.contactTestBitMask = platformCategory
        playerNode.physicsBody?.collisionBitMask = 0;

        return playerNode

    }

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

        /* Called when a touch begins */
        _player.physicsBody?.dynamic = true

    }

    override func update(currentTime: CFTimeInterval) {

        /* Called before each frame is rendered */
        if(CGRectIntersectsRect(platform.frame, _player.frame)){
            println("Collision")
        }
    }

}

CGRectIntersectsRect를 사용하는 것이 잘못된 접근 방식 일 수 있지만 대신 사용할 수 있습니까?

선풍

프레임 속성

프레임 속성은 노드의 자식을 무시하고 노드의 내용을 포함하는 부모 좌표계의 사각형입니다.

또한 문서에서 :

노드의 클래스가 내용을 그리는 경우 프레임은 비어 있지 않습니다.

그리고 SKNode 클래스는 자체 드로잉을 수행하지 않으며 플랫폼은 아마도 SKNode의 하위 클래스이고 플레이어는 SKNode이기 때문에 프레임 속성은 항상 (0,0,0,0)입니다.

몇 가지 방법으로 프레임의 실제 크기에 액세스 할 수 있습니다.

  • 플레이어와 플랫폼을 SKSpriteNode의 하위 클래스로 만들 수 있습니다 .
  • 그대로두고 그 안에있는 자식 SKSpriteNode에 액세스 할 수 있습니다.
  • 그대로두고 calcualteAccumulatedFrame () 메서드를 사용할 수 있습니다 .

문서의 calcualteAccumulatedFrame () 정보 :

computeAccumulatedFrame 메서드를 호출하여 검색된 노드의 누적 프레임은 노드의 프레임과 모든 하위 항목의 프레임을 포함하는 가장 큰 사각형입니다.

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

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

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

충돌을 감지하는 방법?

분류에서Dev

상자 안에 머물기 위해 충돌을 감지하는 방법

분류에서Dev

자바에서 고속 충돌을 감지하고 처리하는 방법

분류에서Dev

두 스프라이트 간의 충돌을 감지하는 방법

분류에서Dev

OnCollisionEnter2D 이외의 2D 충돌을 감지하는 방법

분류에서Dev

이미지 충돌을 감지하기 위해 UIImage initWithImage의 위치를 지정하는 방법

분류에서Dev

Unity 3D에서 드래그하는 동안 GameObject를 사용할 때 충돌을 감지하는 방법이 BoxCollider 2D와 충돌합니다.

분류에서Dev

Unity 3D에서 드래그하는 동안 GameObject를 사용할 때 충돌을 감지하는 방법이 BoxCollider 2D와 충돌합니다.

분류에서Dev

스프라이트 키트에서 충돌을 감지하는 방법은 무엇입니까?

분류에서Dev

AccessViolationException이 감지 될 때 응용 프로그램 충돌을 강제하는 방법

분류에서Dev

SKSpriteNode와 SKView SpriteKit 간의 충돌을 감지하는 방법

분류에서Dev

이전 활동을 반환하는 동안 충돌을 방지하는 방법?

분류에서Dev

앱 충돌을 방지하는 방법

분류에서Dev

두 SKSpriteNode 사이의 충돌을 감지하는 방법이 있지만 겹치도록 허용하는 방법이 있습니까?

분류에서Dev

충돌 중에 Spritekit 물리 몸체가 교차하는 것을 방지하는 방법은 무엇입니까?

분류에서Dev

래그 돌과 같은 물리학을 만드는 방법

분류에서Dev

프로그램이 충돌하는 줄을 얻는 방법

분류에서Dev

충돌체없이 공기 탭을 감지하는 MRTK2

분류에서Dev

배열 상태 필터 충돌을 처리하는 방법

분류에서Dev

메모리 부족 충돌을 디버깅하는 방법

분류에서Dev

충돌을 일으키지 않고 충돌을 감지하는 방법 cocos2d

분류에서Dev

어레이 충돌을 방지하는 방법은 무엇입니까?

분류에서Dev

사용자 정의 속성과 이름 충돌을 방지하는 방법

분류에서Dev

String이 비어있을 때 앱 충돌을 중지하는 방법

분류에서Dev

파이 게임에서 충돌을 확인하는 방법

분류에서Dev

내 AsyncTask로 인한이 충돌을 해결하는 방법

분류에서Dev

두 이미지가 Java에서 충돌하는지 감지하는 방법은 무엇입니까?

분류에서Dev

구형 물체 및 삼각형 지형에 대한 효율적인 충돌 감지 및 응답을 제공하는 방법은 무엇입니까?

분류에서Dev

arpwatch를 사용하여 IP 주소 충돌을 감지하는 방법

Related 관련 기사

  1. 1

    충돌을 감지하는 방법?

  2. 2

    상자 안에 머물기 위해 충돌을 감지하는 방법

  3. 3

    자바에서 고속 충돌을 감지하고 처리하는 방법

  4. 4

    두 스프라이트 간의 충돌을 감지하는 방법

  5. 5

    OnCollisionEnter2D 이외의 2D 충돌을 감지하는 방법

  6. 6

    이미지 충돌을 감지하기 위해 UIImage initWithImage의 위치를 지정하는 방법

  7. 7

    Unity 3D에서 드래그하는 동안 GameObject를 사용할 때 충돌을 감지하는 방법이 BoxCollider 2D와 충돌합니다.

  8. 8

    Unity 3D에서 드래그하는 동안 GameObject를 사용할 때 충돌을 감지하는 방법이 BoxCollider 2D와 충돌합니다.

  9. 9

    스프라이트 키트에서 충돌을 감지하는 방법은 무엇입니까?

  10. 10

    AccessViolationException이 감지 될 때 응용 프로그램 충돌을 강제하는 방법

  11. 11

    SKSpriteNode와 SKView SpriteKit 간의 충돌을 감지하는 방법

  12. 12

    이전 활동을 반환하는 동안 충돌을 방지하는 방법?

  13. 13

    앱 충돌을 방지하는 방법

  14. 14

    두 SKSpriteNode 사이의 충돌을 감지하는 방법이 있지만 겹치도록 허용하는 방법이 있습니까?

  15. 15

    충돌 중에 Spritekit 물리 몸체가 교차하는 것을 방지하는 방법은 무엇입니까?

  16. 16

    래그 돌과 같은 물리학을 만드는 방법

  17. 17

    프로그램이 충돌하는 줄을 얻는 방법

  18. 18

    충돌체없이 공기 탭을 감지하는 MRTK2

  19. 19

    배열 상태 필터 충돌을 처리하는 방법

  20. 20

    메모리 부족 충돌을 디버깅하는 방법

  21. 21

    충돌을 일으키지 않고 충돌을 감지하는 방법 cocos2d

  22. 22

    어레이 충돌을 방지하는 방법은 무엇입니까?

  23. 23

    사용자 정의 속성과 이름 충돌을 방지하는 방법

  24. 24

    String이 비어있을 때 앱 충돌을 중지하는 방법

  25. 25

    파이 게임에서 충돌을 확인하는 방법

  26. 26

    내 AsyncTask로 인한이 충돌을 해결하는 방법

  27. 27

    두 이미지가 Java에서 충돌하는지 감지하는 방법은 무엇입니까?

  28. 28

    구형 물체 및 삼각형 지형에 대한 효율적인 충돌 감지 및 응답을 제공하는 방법은 무엇입니까?

  29. 29

    arpwatch를 사용하여 IP 주소 충돌을 감지하는 방법

뜨겁다태그

보관