0

Swift 3 (Xcode 8) にアップグレードする前に、ランダムな位置の開始は次のようになりました。

func randomStartPosition(range: Range<Int> = 45...(Int(self.frame.size.height)-45)) -> Int {
    let min = range.startIndex
    let max = range.endIndex
    return Int(arc4random_uniform(UInt32(max - min))) + min }

これは次のように更新されたため、変換後に機能しなくなりました。

func randomSmallObjectsStartPosition(_ range: Range<Int> = 25...(Int(self.frame.size.height)-25)) -> Int {
    let min = range.lowerBound
    let max = range.upperBound
    return Int(arc4random_uniform(UInt32(max - min))) + min }

最終的にGamePlayKitについて学んだので、これはうまくいきました:

開始:

import GameplayKit

次に、GamePlayKit を使用して新しい確率変数を簡単に作成できます。

アップルのサイトで読むことができますが、基本的にこれにより、途中でより多くの「ヒット」が得られます。

lazy var randomStartPosition = GKGaussianDistribution(randomSource: GKARC4RandomSource(), lowestValue: 0, highestValue:100)

そして、これはすべて消費されるまでランダムな値を循環し、その後再び開始します。

lazy var randomShuffle = GKShuffledDistribution(randomSource: GKARC4RandomSource(), lowestValue: 0, highestValue:100)

最後に、完全にランダムな値のジェネレーター:

lazy var totallyRandom = GKRandomDistribution(lowestValue: 1, highestValue: 100)

使用方法の例:

    MyObject.position = CGPoint(x: self.frame.size.width + 20, y: CGFloat(totallyRandom.nextInt()) )

これにより、オブジェクトが画面の右端から外れ、Y 軸上の完全にランダムな位置に配置されます。

4

0 に答える 0