SpriteKit 시도 path 11개를 사용하여 Homming
적은 구불구불 유저를 향해 이동하고, 적의 총알은 이쪽으로 오며 난이도를 높인다.
황록색의 적은 출현 시기의 유저 위치를 목표로 구불구불 이동하여 접근한다
if (enemy.enemyColor == SKColor.greenColor()) {
// プレイヤーの位置
let dragon: DragonUnit = childNodeWithName("dragon") as! DragonUnit
// CGPath の宣言
let path:CGMutablePath = CGPathCreateMutable()
let y = Int(arc4random() % 450) + 150
// 始点を決定
CGPathMoveToPoint(path, nil, CGRectGetMaxX(self.frame), CGFloat(y))
var cp1x : CGFloat = (2 * CGRectGetMaxX(self.frame) + dragon.position.x)/3
var cp1y : CGFloat = CGRectGetMinY(self.frame)
var cp2x : CGFloat = (CGRectGetMaxX(self.frame) + 2 * dragon.position.x)/3
var cp2y : CGFloat = CGRectGetMaxY(self.frame)
//最終目標はプレイヤー
CGPathAddCurveToPoint(path, nil, cp1x, cp1y, cp2x, cp2y, dragon.position.x, dragon.position.y)
//プレイヤーの位置から画面の端までの動き
cp1x = dragon.position.x - (CGRectGetMaxX(self.frame) - dragon.position.x)/3
cp1y = CGRectGetMinY(self.frame)
cp2x = dragon.position.x - (CGRectGetMaxX(self.frame) - dragon.position.x)*2/3
cp2y = CGRectGetMaxY(self.frame)
CGPathAddCurveToPoint(path, nil, cp1x, cp1y, cp2x, cp2y, CGRectGetMinX(self.frame), CGRectGetMidY(self.frame))
//作ったCGPathをSKActionにセット
let sequenceLeft = SKAction.followPath(path, asOffset: false,orientToPath: false, duration: 3.0)
let remove = SKAction.removeFromParent()
let sequence = SKAction.sequence([sequenceLeft, remove])
// 敵SKSpriteNodeのrunActionにセット
enemy.runAction(sequence)
}
노란 적은 플레이어를 목표로 사격을 합니다.var enemyShot1Last:CFTimeInterval! // 敵ショットタイミング
override func update(currentTime: CFTimeInterval) {
//敵ショット
if(enemyShot1Last == nil){
enemyShot1Last = currentTime
}
if(enemyShot1Last+1.5 <= currentTime){
if(!self.paused){
enemyShot1Fire()
}
enemyShot1Last = currentTime
}
}
적의 총알은 노란색 적만이 화면에서 출력할 수 있다.if (enemy.enemyColor == SKColor.yellowColor()){
enemy.name = "yellow"
}
적의 총알은 유저를 목표로 하는 동시에 화면의 바깥쪽으로 이동해야 하기 때문에 출발점에서 유저의 x축과 y축 사이의 거리, 그리고 화면의 가장자리(x축=0)에서 끝점까지의 y축if((childNodeWithName("yellow")) != nil){
let action = SKAction.animateWithTextures([b1, b2, b3, b4], timePerFrame: 0.5)
fire.runAction(SKAction.repeatActionForever(action))
fire.size = CGSizeMake(60, 60)
fire.position.x = enemyYellow.position.x + 5
fire.position.y = enemyYellow.position.y
let dragon: DragonUnit = childNodeWithName("dragon") as! DragonUnit
let path:CGMutablePath = CGPathCreateMutable()
// yの座標算出
let y2 : CGFloat = fire.position.y -
(fire.position.x * (fire.position.y - dragon.position.y))/
(fire.position.x - dragon.position.x)
CGPathMoveToPoint(path, nil, fire.position.x, fire.position.y)
CGPathAddLineToPoint(path, nil, 0, y2)
fire.runAction(sequence)
self.addChild(fire)
}
Reference
이 문제에 관하여(SpriteKit 시도 path 11개를 사용하여 Homming), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/rnsm504/items/7803b07b97d7f8eacc5e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)