2016-07-11 9 views
0

다른 개체 (훅)를 잡을 때 화면에서 움직이는 물체 (물고기)와 관련된 게임을하고 있습니다. 위아래로 움직인다. 물체가 접촉하면 물고기의 위치는 갈고리의 위치와 같아집니다. 그래서 접촉을 시작했습니다 (어떤 일을하는지, 확실합니다). 나는 갈고리와 물고기가 만져서 물고기 위치가 갈고리와 같아 졌다고 말했어.위치가 설정되면 노드 위치 변경 (SpriteKit)

func didBeginContact(contact: SKPhysicsContact) { 

     let firstBody = contact.bodyA 
     let secondBody = contact.bodyB 




    if firstBody.categoryBitMask == physicsCategory.fishHook && secondBody.categoryBitMask == physicsCategory.greenFish || firstBody.categoryBitMask == physicsCategory.greenFish && secondBody.categoryBitMask == physicsCategory.fishHook{ 

       CollisionWithfishHook(firstBody.node as! SKSprit 

    eNode, greenFish: secondBody.node as! SKSpriteNode) 

     } 
    } 

    func CollisionWithfishHook (fishHook: SKSpriteNode, greenFish: SKSpriteNode){ 

     greenFish.position = CGPointMake(fishHook.position.x, fishHook.position.y) 

    } 

어떤 이유로 나는 그것을 실행할 때 아무런 반응이 없습니다. 나는 그 물고기가 훅에 닿았을 때 물고기를 제거하라고 말했기 때문에 접촉이 시작되었다는 것을 알았습니다. 문제는 녹색 생선의 위치를 ​​바꿀 수 없다는 것입니다. 왜 이것이 문제이며 해결하기 위해 무엇을 할 수 있습니까?

+0

당신은 greenfish가 항상 secondBody라고 가정하고있는 것처럼 보입니다. 항상 그런 것은 아닙니다. –

답변

0

didBeginContact 방법에서 물고기의 위치를 ​​변경하면 물고기의 위치를 ​​한 번만 변경합니다. 즉, 물고기와 후크가 만지는 순간입니다. update 방법으로 물고기 위치를 계속 업데이트해야합니다.

나는 클래스 fishToUpdate라는 GameScene 클래스 변수 때 '후크'하나, 당신의 didBeginContact 방법에 fishToUpdate = greenFish (or whatever was caught) 설정을 만들 것입니다. 그런 다음 update 메서드에서 물고기의 위치를 ​​fishToUpdate.position = fishHook.position으로 업데이트합니다.

+0

재정의 func 업데이트에 대해 이야기하고 있습니까? 그렇다면 무엇을해야합니까. 나는 혼란 스럽다. 내가 만졌을 때 그 물체가 만졌을 때 그 위치 나 위치가 바뀌어야한다고 말할까요? – james

관련 문제