[SWIFT] 일정 기간 동안 수동으로 이동 노드
SWIFT일정 기간 동안 수동으로 이동 노드
해결법
-
1.이 같은 시나리오에서 SKActions를 사용하지 정확합니다. 난 당신이 SKActions를 사용하지 않고 위치로 노드를 이동하려고 참조하십시오. 난 정말 당신이 게시 된 코드가있는 문제를 이해하지 않습니다. 그러나 나는 SKActions없이 업데이트 기능의 위치에 노드를 이동하는 방법을 보여줍니다 작은 샘플 프로젝트를 작성했습니다. 이 샘플 프로젝트에서 나는 현재의 터치 위치로 이동이 스프라이트 있습니다. 당신은 노드가 이동하는 속도뿐만 아니라 속도가 적용되는 속도를 설정할 수 있습니다. 당신은 게임에 대한 올바른 느낌을 얻을 수있는 속도 장난을 시도 할 수 있습니다. 노드가 목표 위치에 도달 할 때 당신은 또한 (다시,이 게임에 따라 달라집니다) 경우를 처리해야합니다.
이 같은 시나리오에서 SKActions를 사용하지 정확합니다. 난 당신이 SKActions를 사용하지 않고 위치로 노드를 이동하려고 참조하십시오. 난 정말 당신이 게시 된 코드가있는 문제를 이해하지 않습니다. 그러나 나는 SKActions없이 업데이트 기능의 위치에 노드를 이동하는 방법을 보여줍니다 작은 샘플 프로젝트를 작성했습니다. 이 샘플 프로젝트에서 나는 현재의 터치 위치로 이동이 스프라이트 있습니다. 당신은 노드가 이동하는 속도뿐만 아니라 속도가 적용되는 속도를 설정할 수 있습니다. 당신은 게임에 대한 올바른 느낌을 얻을 수있는 속도 장난을 시도 할 수 있습니다. 노드가 목표 위치에 도달 할 때 당신은 또한 (다시,이 게임에 따라 달라집니다) 경우를 처리해야합니다.
당신은 질문이있는 경우에는이 전혀 도움이 및 / 또는 알려줘.
import SpriteKit class GameScene: SKScene { var sprite: SKSpriteNode! var travelPoint: CGPoint = CGPoint() //The point to travel to. let travelSpeed = CGVector(dx: 200, dy: 200) //The speed at which to travel. let rate:CGFloat = 0.1 //1.0 Completely responsive. 0.0 Completely unresponsive. I set this value to < 1 to smooth the application of motion. override func didMoveToView(view: SKView) { self.physicsBody = SKPhysicsBody(edgeLoopFromRect: self.frame) sprite = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 50, height: 50)) sprite.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.size) sprite.position = CGPoint(x: self.size.width/2.0, y: self.size.height/2.0) sprite.physicsBody?.affectedByGravity = false self.addChild(sprite) } override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { let touch = touches.first as! UITouch let location = touch.locationInNode(self) travelPoint = location } override func touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) { let touch = touches.first as! UITouch let location = touch.locationInNode(self) travelPoint = location } override func update(currentTime: CFTimeInterval) { let disp = CGVector(dx: travelPoint.x-sprite.position.x, dy: travelPoint.y-sprite.position.y) let angle = atan2(disp.dy, disp.dx) let vel = CGVector(dx: cos(angle)*travelSpeed.dx, dy: sin(angle)*travelSpeed.dy) let relVel = CGVector(dx: vel.dx-sprite.physicsBody!.velocity.dx, dy: vel.dy-sprite.physicsBody!.velocity.dy) sprite.physicsBody!.velocity = CGVector(dx: sprite.physicsBody!.velocity.dx+relVel.dx*rate, dy: sprite.physicsBody!.velocity.dy+relVel.dy*rate) } }
from https://stackoverflow.com/questions/30362586/manually-move-node-over-a-period-of-time by cc-by-sa and MIT license
'SWIFT' 카테고리의 다른 글
[SWIFT] 스위프트의 오류 전달 (0) | 2020.11.08 |
---|---|
[SWIFT] 경로는 MKMapView에 표시되지? (0) | 2020.11.08 |
[SWIFT] 사용자 정의로 자연스럽게 전환 애니메이션 (0) | 2020.11.08 |
[SWIFT] 스위프트 사용하는 TDD의 성능 테스트 (0) | 2020.11.08 |
[SWIFT] 쌍 어레이의 첫 번째 요소를 위젯 (SWIFT) (0) | 2020.11.07 |