2017-10-29 3 views
1

私は本当に簡単なことを書こうとしています。このインスタンスでSpriteKitを使用します。 私が他のプラットフォームでやったやり方は、目に見えない子供が「スティック」していることです。目に見えない「スティック」の衝突を検出することで、物体が壁の近くにいるかどうかを知ることができます。 私はSpriteKitを使用して同じものを複製しようとしています。もちろん、私は目に見えない "ビーム"をオブジェクトから出て、私に距離を与えたいと思っていますが、それはおそらくあまりにも面倒です。壁に近いオブジェクトを検出する

私は今までに得たばかげたプロジェクトを改善する方法をすべて解説しています。

My Project so far

感謝。ここで

+0

神聖ながらくたそのMACプロジェクト:)私はあまりにも – Fluidity

答えて

0

はあなたに最も近い壁までの距離を伝えるセンターの更新に物理学...

ドラッグの車を移動させ、マウス、およびラベルを必要としない、私はそれを思い付いたものです。マウスを放して車をリセットします。

非常に簡単な例では、より正確な測定を行うために更新することができます。

class GameScene: SKScene { 


    let car = SKSpriteNode(color: .blue, size: CGSize(width: 50, height: 100)) 
    let label = SKLabelNode(text: "") 


    func findNearestWall() -> CGFloat { 

    // you can make this more advanced by using the CGPoint of the frame borders of the car, or even 6+ points for more accuracy 

    let closestX: CGFloat = { 

     if car.position.x < 0 { // left wall 
     return abs(frame.minX - car.position.x) 
     } else { // right wall 
     return abs(frame.maxX - car.position.x) 
     } 
    }() 

    let closestY: CGFloat = { 
     if car.position.y < 0 { // bottom wall 
     return abs(frame.minY - car.position.y) 
     } else { // top wall 
     return abs(frame.maxY - car.position.y) 
     } 
    }() 

    if closestX < closestY { 
     return closestX.rounded() // as closest wall distance 
    } else { 
     return closestY.rounded() // as closest wall distance 
    } 
    } 


    override func didMove(to view: SKView) { 
    removeAllChildren() 
    label.fontSize *= 2 
    addChild(car) 
    addChild(label) 
    } 

    override func mouseDown(with event: NSEvent) { 
    } 

    override func mouseDragged(with event: NSEvent) { 
    let location = event.location(in: self) 
    car.position = location 
    } 

    override func mouseUp(with event: NSEvent) { 
    car.position = CGPoint.zero 
    } 

    override func didEvaluateActions() { 
    label.text = String(describing: findNearestWall()) 
    } 
} 
+0

が行う、素晴らしいのが、私はベクトル必要 - AIに渡されます。それは車から出てくるあらかじめ定義されたベクトル、または他のオブジェクトである必要があります。 距離を計算するのはかなり簡単ですが、これを済ませたと思います。 – GregJaskiewicz

+0

@GregJaskiewicz私は混乱しています。おそらくダイアグラムを使って、あなたの質問に詳しいことができますか? – Fluidity

+0

あなたが正方形から出てくる4本の線を描くと想像してください。どちらの方向でも中央の15度と30度です。この質問に添付されたプロジェクトで試していたのと同様です。 – GregJaskiewicz

関連する問題