2016-06-16 14 views
0

나는 뒤쪽 수술에서 쌓아 올려 진 스위프트를 배웠으며, 이에 대한 도움을 주시면 대단히 감사하겠습니다.주요 변경 사항이있는 SKAction 스프라이트 동작

문제 설명 : 나는 히트 할 때 스프라이트를 뒤로 밀게하는 기능을 가지고 있습니다. 내가 사용할 때

self.runAction(jumpBackSequence) 

나는 원하는 동작을 얻는다. (스프라이트는 좋은 거리를 다시 푸시됩니다.)

enter image description here

을 지금은 "withKey"를 사용하려면이 옵션을 업데이트 할 때 (I 다음 접촉 전진에 다시 정 동작을 중지 할 수 있어야하기 때문에 크게 dimished됩니다

self.runAction(jumpBackSequence, withKey: "moveStraightLine") 

enter image description here

이 작업을 만들어 내 기능은 아래와 같습니다.

func pushBack(){ 
      self.removeActionForKey("moveStraightLine") 

      let height:CGFloat = 5 
      let jumpDistanceA:CGFloat = 20 
      let jumpDistanceB:CGFloat = 20 
      let duration:NSTimeInterval = 0.15 

      let jumpUp = SKAction.moveByX(0, y:height, duration:duration) 
      let moveBack = SKAction.moveByX(jumpDistanceA, y: 0, duration: duration) 
      let jStep1 = SKAction.group([jumpUp, moveBack]) 

      let jumpDown = SKAction.moveByX(0, y:(height * -1), duration:duration) 
      let moveBack2 = SKAction.moveByX(jumpDistanceB, y: 0, duration: duration) 
      let jStep2 = SKAction.group([jumpDown, moveBack2]) 

      let moveZombie1 = SKAction.moveToX(0, duration: spawnSpeed1() ) 
      let removeZombie1 = SKAction.removeFromParent() 
      let moveAndRemoveZombie1 = SKAction.sequence([moveZombie1, removeZombie1]) 

      let jumpBackSequence = SKAction.sequence([jStep1, jStep2, moveAndRemoveZombie1]) 

      self.runAction(jumpBackSequence) 

    //   self.runAction(jumpBackSequence, withKey: "moveStraightLine") 
} 

답변

0

왜 이런 문제가 발생했는지 모르겠지만 runAction withKey가 키가없는 예제와 같이 지정된 거리만큼 코드를 실제로 이동시키고 있음을 알게되었습니다. 화면 너비의 일부를 사용하도록 코드를 업데이트했을 때 키가 있거나없는 경우와 동일하게 동작합니다. 따라서 이것이 스위프트의 사소한 버그 일 수 있습니다.

내가이 다른 사람을 도움이되기를 바랍니다

let jumpDistanceA:CGFloat = (self.scene?.size.width)! * 0.15 
let jumpDistanceB:CGFloat = (self.scene?.size.width)! * 0.15 

에 내가 거리를 업데이트 문제를 해결하려면. 안부, MPE

+0

시간 전에 조치를 제거하기 때문에 생각합니다. 키를 넣고 맨 위에 self.removeActionForKey ("moveStraightLine") 줄을 제거하면 어떻게됩니까? –

+0

그 열쇠는 원래의 움직임을 멈추게합니다. 스프라이트를 만들 때 같은 키를 사용하여 액션을 통해 움직인다. 점프를 되돌리려면 먼저 제거해야합니다. 이상하게도 화면 너비의 일부만 사용하도록 코드를 업데이트하면 수정되었습니다. 나는 버그 나 좀 더 심오한 수수께끼를 만났을 지 확신하지 못한다. 시간을내어보고 회신 해 주셔서 감사합니다. 이미 스택 오버플로에 게시 할 시간을 가진 모든 사람들로부터 많은 것을 배우고 있습니다. –

+0

다른 작업에 왜 같은 이름을 사용하고 있습니까? 다른 이름 바꾸기를 시도하십시오. –

1

당신은 좀비를 이동 그래서 당신이 다시 작업을 추가 할 때의 moveTo하지 moveBy를 사용하고, 당신은 지금, 끝으로 이동하는 X 초를 가지고, 가까운 지점에서 시작하는 말 이미 여행 한 시간 인 X 초는 걸리지 않습니다. 당신은 당신이 보는 효과 때문에 이것을 원하지 않습니다. moveBy를 사용하면 좀비 속도가 일정하게 유지됩니다.