2016-10-23 2 views
0

표시, 내가 X = 400와 y = 그러나 self.frame.height/2SKSpriteNode 애니메이션은 다음 코드에 따라 최대 바닥을-

에서 장면에서 산 (언덕)를 표시하고, 나는 언덕이 바텀에서 표시 할 (장면 아래에서) 애니메이션처럼. 어떻게 코딩 할 수 있습니까? 현장 "에서"에서 스프라이트 슬라이드를 위로하게 애니메이션을 만들려면

let hill = SKSpriteNode(imageNamed: "hill") 



hill.position = CGPoint(x: 400, y: self.frame.height/2) 



hill.setScale(1) 

hill.physicsBody = SKPhysicsBody(rectangleOfSize: hill.size) 

hill.physicsBody?.categoryBitMask = 1 

hill.physicsBody?.collisionBitMask = 2 

self.addChild(hill) 
+0

귀하의 질문에 명확한 내용을 추가하십시오. 장면의 "아래"에서 나타나길 원하십니까? – Nik

+0

예, 아래 장면에서. – Illep

답변

0

, 이렇게 :

설정 초기 위치를 장면 아래로 :

hill.position = CGPoint(x: 400, y: self.frame.height/CGFloat(2) - self.frame.height) 

참고 : - self.frame.height는 노드 1 전체 프레임 높이를 원하는 위치 아래에 배치하는 데 사용됩니다.

그런 다음 동작을 시작합니다 그것은 최대의 원하는 위치로 didMoveToView에서, 또는 당신은 애니메이션을 시작하여 원하는 목적지 :

let moveUpAnimation = SKAction.move(to: CGPoint(x: 400, y: self.frame.height/CGFloat(2)), duration: 0.75) 

hill.run(moveUpAnimation) 

이 예는 하나 개의 전체 프레임 높이를 스프라이트를 이동하기 위해 0.75 초 정도 걸립니다 작업을 만듭니다. 이 효과를 만들기 위해 볼 수있는 장면 아래 어디에서나 초기 위치를 설정하고 지속 시간을 원하는 속도로 변경할 수 있습니다.

+0

오류가 발생했습니다. 이진 연산자 '/'는 'CGFloat'및 'Int'형식의 피연산자에 적용 할 수 없으며 SKAction.moveTo (y : self.frame.height/2, duration : 0.75)에 표시됩니다. – Illep

+0

Now '이진 연산자'/ '는'CGFloat '및'Double '유형의 피연산자에 적용 할 수 없습니다. 죄송합니다 나는 초보자입니다 – Illep

+0

'CGFloat'유형의 값을 'CGPoint'예상 인수 유형으로 변환 할 수 없습니다. – Illep