2017-03-17 4 views
0

画面の中央からランダムなスピードで画面上のどこにでも画像を焼き付けることができるかどうか不思議です。画面の中央から任意の場所にランダムな画像を生成する方法は?

この種のファイルを開こうとすると、Xcodeがクラッシュするため、.sksを含むファイルがなくても実行することが重要です。これは、UIViewControllerで行う必要があります。

私はすでにビューをSKViewにサブクラス化しようとしましたが、成功しませんでした。既存のプロジェクトを見ると、SKViewと、開かない.sksを含むファイルが常に使用されます。私は誰かが私を助けることを願っています!

答えて

1

"発射"する必要がある画像のそれぞれは、SKSpriteNodeである必要があります。彼らはSKSceneの子供でなければなりません。 SKSceneを作成する方法やView Controllerに提示する方法がわからない場合は、Xcode - File> New Project> Gameでサンプルゲームプロジェクトを作成してみてください。画面に触れるたびに素晴らしい四角形を表示する素敵なサンプルプロジェクトが作成されます。

あなたが発射する準備ができて、あなたのシーン稼働して、だけでなく、あなたのスプライトノードを取得したら、単にあなたが画面中央から発射する必要があるすべてのノードのためにこれらのいくつかの行を実行します。

let viewSize = UIScreen.main.bounds.size 
let randomX = RandomInt(min: 0, max: viewSize.width) 
let randomY = RandomInt(min: 0, max: viewSize.height) 
let randomPosition = CGPoint(x: randomX, y: randomY) 
let minDuration = 1 // Put here whatever value you feel fit for the minimum duration of flying 
let maxDuration = 5 // Put here whatever value you feel fit for the maximum duration of flying 
let randomDuration = TimeInterval(RandomInt(min: minDuration, max: maxDuration)) 
let fireAtWill = SKAction.move(to: randomPosition, duration: randomSpeed) 
yourSpriteNode.runAction(fireAtWill) 

ドンを「yourSpriteNode」を起動する必要があるスプライトノードの名前に置き換えることを忘れないでください。ここで

はRandomIntヘルパー関数です:

func RandomInt(min: Int, max: Int) -> Int { 
    return Int(arc4random_uniform(UInt32(max-(min-1)))) + min 
} 
+0

ありがとうございました! Woa、あなたが作った素敵なアプリ:)あなたのウェブサイトを見ました! –

+0

ありがとう!実際、K51とCube DiveだけがSpriteKitをベースにしています。これはSwift/SpriteKitでの数日間の私の教育の一種です。 – Stoyan

0

sksファイルに関する問題は、奇妙なものです。詳細については別の質問をしてください。

Skypeファイルを使用せずにSpriteKitを使用することはできますが、これは単なるショートカットですが、必要な場合はすべてコードで実行できます。議論、例、および有用なリンクについては、this SO answerを参照してください。

関連する問題