2016-06-24 6 views
0

세로 장면에서 가로로 이동하는 birdNode (spriteNode)가 있습니다.내 Sprite-Kit 게임에이 작업을 구현하는 올바른 방법은 무엇입니까?

birdNode가 계란 (spriteNode)을 화면 하단의 cgPoint쪽으로 떨어 뜨립니다.

birdNode가 임의의 시간/위치에서 임의로 달걀을 떨어 뜨리 길 원합니다.

2 초 (birdNode가 화면을 가로 질러 이동하는 데 걸리는 시간) 사이의 임의의 숫자로 NSTimeInterval을 생성하고 eggNode를 birdNode 위치에 생성하고 dropEgg 함수를 호출하는 것을 고려했습니다.

I은 ​​또한 dropEgg 함수를 호출 한 후

birdNode.position.x = randomPoint 

eggNode에 로딩하고, 랜덤 CGPoint를 생성하는 것으로 간주 하였다.

내 질문에 다른 접근 방식을 사용해야합니까? 정확히 어디에 dropNode 함수를 호출해야합니까? 지금은 제대로 작동하지 않습니다.

아래의 currentTime 업데이트 함수에서 randomTime/randomPosition을 고려해 보았습니다.하지만 Node를 삭제하지만 모든 프레임 렌더링에서 알을 생성하므로 올바른 방법이라고 생각하지 않습니다.

override func update(currentTime: CFTimeInterval) { 
} 

다음은 난을 놓고 임의의 dropPoint float 및 새가 화면을 가로 질러 비행하는 코드입니다.

func dropEgg(){ 

    //aim 
    let dx = eggNodeTarget.position.x - birdNode.position.x 
    let dy = eggNodeTarget.position.y - birdNode.position.y 
    let angle = atan2(dy, dx) 
    dragonProjectileNode.zRotation = angle 

    //Seek 
    var vx = turretNode.position.x 
    var vy = turretNode.position.y 

    //creates eggNodeSprite 
    loadEggNode() 

    //shoot 
    let shootAction = SKAction.moveTo(CGPointMake(vx, vy),duration: 0.75) 
    eggNode.runAction(shootAction) 

} 

func loadRandDropLocationX() -> CGFloat{ 

    //or minNodeTimeValue? 
    var MinNodeSpawnValue = self.frame.size.width * 0.2 

    //or maxNodeTimeValue? 
    var MaxNodeSpawnValue = self.frame.size.width * 0.8 

    //or randomTime? 
    var randomPointUInt32 = UInt32(MaxSpawnValue - MinSpawnValue) 
    return (CGFloat(arc4random_uniform(randomPointUInt32)) + MinNodeSpawnValue) 
} 

func dragonMoveRight(){ 
    let moveDragon = SKAction.moveTo(loadRandDestinationRight(), duration: 2.3) 
    dragonNode.runAction(moveDragon) 
} 

답변

0

dropEgg()을 2 초마다 호출하려면 NSTimer을 사용하십시오.

같은 :

NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(dropEgg), userInfo: nil, repeats: true)

+0

는 <3 @valarmorghulis 근무 –