2017-01-11 2 views
3

Swift 3로 스핏 킷 (SpriteKit)으로 작은 게임을 개발 중입니다. 적을 캐릭터의 방향으로 이동시키고 싶지만 항상 적을 멈추게합니다. 캐릭터의 초기 위치멈추지 않고 방향을 향해 오브젝트를 움직이는 방법

나는이 일을 해요 :

enemigo.name = "enemigo" 
enemigo.position = CGPoint(x: 280, y: 100) 
enemigo.xScale = 1/1 
enemigo.yScale = 1/15 
addChild(enemigo) 


let movement1 = CGVector(
    dx: (enemigo.position.x - personaje.position.x)*10, 
    dy: (enemigo.position.y - personaje.position.y)*10 
) 

let actionTransaction = SKAction.move(by: movement1, duration: 20) 
enemigo.run(actionTransaction) 

가 어떻게 문자의 초기 위치에 정지하지 않고 특정 방향으로 원수를 이동해야

?

+0

기본적으로 적에게 플레이어를 쫓기를 원하십니까? – Fluidity

+0

멈추지 않고 캐릭터의 방향으로 적을 이동하고 싶습니다. @Fluidity – HessianMad

+0

Ok. 장면의'.update()'메서드에서 적의 액션을 업데이트해야합니다. 그렇지 않으면 당신의 나쁜 녀석은 오직 하나의 움직임을 얻습니다 ... 그는 더 많이 필요로합니다! 또한 여기에 적합한 수학을 수행하는 데 유용한 기사가 있습니다. https://www.raywenderlich.com/90520/trigonometry-games-sprite-kit-swift-tutorial-part-1 – Fluidity

답변

2

당신은 방향의 벡터를 알아 내려고 노력했습니다.

let actionTransaction = SKAction.move(by: movement1, duration: 20) 

그래서 모든 당신이 필요 : move(by: CGVector) 절대하지, 상대이기 때문에, 점점 더,

지금 당신이 원하는만큼이 moveBy action 반복 할 수 있고, 적은 같은 방향으로 계속 이동합니다 이걸 영원히 실행하면 with a key, 어디서나 찾아 낼 수 있습니다. 언제든지 멈출 수 있습니다.

run(SKAction.repeatForever(actionTransaction), withKey: "movingEnemy") 
+0

저는'let actionTransaction = SKAction.move (by : movement1, duration : 20)'함수에서'sceneDidLoad()'에서이 함수를 호출하고, 원하는대로 실행하지 않았습니다. 어떻게'run (SKAction.repeatForever (actionTransaction), withKey : "movingEnemy")'를 사용해야합니까? @ Confused – HessianMad

+0

당신이 질문을 너무 글자 그대로 조금 읽었을 것 같아요. P – Fluidity

+0

@HessianMad 저는 우리 중 누구도 여전히 당신이하려는 것을 이해하지 못한다고 생각합니다.정교하게 제발 주시겠습니까? O, me explica en español :), y voy a intentar entenderlo – Fluidity

1

또는 SpriteKit과 함께 GameplayKit을 사용할 수도 있습니다. GameplayKit은 게임에 대한 일반적인 알고리즘의 표준 구현을 제공하며 SpriteKit과 함께 사용할 수 있습니다.

불행히도 저는 너무 익숙하지 않아서 코드를 줄 수는 없습니다. 나는 Apple의 GameplayKit 프로그래밍 가이드를 살펴볼 것을 제안합니다. 에이전트 (예 : 적)가 특정 위치로 이동하거나 장애물을 피하거나 다른 요원을 가로 채거나 에이전트에서 도망 가기 위해 사용할 수있는 기능이 있습니다.

따라서 플레이어가 움직이는 동안 일부 적 플레이어를 잡으려고 프로그래밍 할 수 있지만 다른 적들은 플레이어로부터 도망 갈 수 있습니다. 다른 적들은 무작위로 방황 할 수 있습니다.

간단히 말해서 GameplayKit은 SpriteKit 게임에 아주 강력한 기능을 추가 할 수 있습니다. 이것은 게임의 아키텍처에 대해 좀 더 많은 시간을 투자하는 것을 의미 할 수 있지만, 결국에는 GameplayKit의 다른 기능을 사용하면 가치가있을 수 있습니다.

관련 문제