2016-10-01 3 views
0

입니다. 이동 작업에서 Y 값이 변경되지 않고 X 값이 변경되어서 이유를 알 수 없습니다. changeY 변수가 5.0 또는 -5.0의 올바른 값으로 작업을 수행하지만 "player"SkSpriteNode의 Y 값은 변경되지 않습니다. 도와주세요.Xcode Swift SpriteKit SkSpriteNode Y 값이 움직이지 않지만 X가

override func update(_ currentTime: TimeInterval) { 

    let percent = touchLocation.x/size.width 
    let newAngle = percent * 180 - 180 
    print(newAngle) 
    if playButtonPressed{ 

     var changeY = 0.0 
     if newAngle >= -180{ 
      changeY = 5.0 
     } 
     else{ 
      changeY = -5.0 
     } 
     player.zRotation = CGFloat(newAngle) * CGFloat(M_PI)/180.0 
     print(changeY) 
     var move = SKAction.moveBy(x: -(player.position.x+1), y: CGFloat(changeY), duration: 2000.0) 
     player.run(move) 
    } 
} 

답변

0

궁극적 인 목표는 무엇인지는 분명치 않지만 계산은 같습니다. 특히 운동의 지속 시간이 2000 초라는 사실. 30 분 이상이 걸립니다. (!) x 계산은 현재 수행중인 것처럼 moveBy이 아닌 실제로 moveTo을 사용할 것을 제안합니다.

다음은 코드를 기반으로하지만 실제 의도하는 것이 무엇인지 잘 모르므로 다음을 수행합니다. 터치가 화면 왼쪽에있을 경우 왼쪽으로 이동하고 오른쪽으로 이동하면 왼쪽으로 이동합니다. 터치가 화면의 오른쪽에있는 경우 ...

override func update(_ currentTime: TimeInterval) { 
    if playButtonPressed { 
     let percent = touchLocation.x/size.width 
     let newAngle = percent * 180 - 180 
     player.zRotation = CGFloat(newAngle) * CGFloat(M_PI)/180.0 

     let moveRightAndUp = touchLocation.x>size.width/2 
     let changeY: CGFloat = moveRightAndUp ? 5.0 : -5.0 
     let changeX: CGFloat = moveRightAndUp ? 1.0 : -1.0 
     let move = SKAction.moveBy(x: changeX, y: changeY, duration: 1/60) 
     player.run(move) 
    } 
} 
+0

좋아요. 그래서 내가 y를 추가하면 작동하지만 "player"노드를 이동하는 방법이 있는지 궁금합니다. newAngle의 방향으로 단지 이동하는 일정한 속도. 도와 줘서 고마워. –

관련 문제