Swift 3とSprite Kitを使用してゲームを開発しています。私は移動してはならないが、衝突を検出するために重要なドットのグリッドを持っています。私の問題は、ドットがやや動いていることです。あなたはそれが動いているのを見ることはできませんが、私がポジションを印刷すると、私はポジションを見ます。これは私がドットを形成する方法である:SpriteKit isDynamicがfalseのときにスプライトが少し動く
for dot in dots {
//dot subclasses SKSpriteNode
dot.name = "dot\(index)"
dot.size = CGSize(width: DotWidth, height: DotHeight)
dot.position = pointFor(column: dot.column, row: dot.row)
dotsLayer.addChild(dot)
//dot.sprite = sprite
dot.physicsBody = SKPhysicsBody(circleOfRadius: 2)
dot.physicsBody?.affectedByGravity = false
dot.physicsBody?.allowsRotation = false
dot.physicsBody?.isDynamic = false
dot.physicsBody?.categoryBitMask = PhysicsCategory.Dot
dot.physicsBody?.contactTestBitMask = PhysicsCategory.Stick
dot.physicsBody?.collisionBitMask = PhysicsCategory.None
dot.physicsBody?.usesPreciseCollisionDetection = true
index += 1
}
私はaffectedByGravity(無重力が存在しないにも関わらず)、およびallowsRotationのように、いくつかのことを試してみました。 1ドット(SKSpriteNodeのサブクラス)の位置を印刷すると、オプション((47.9458236694336、47.9458236694336))が得られますが、後で同じドットの位置を印刷すると、オプション((47.86669921875、79.892448425293))が得られます。私が待つ時間が長くなればなるほど、差は大きくなります。ショーフィジックスをオンにすると、ドットが左下に移動することがわかります。ドットを一切動かさない方法はありますか?
これらの点は衝突に重要であり、衝突に反応する必要がありますか、単に連絡先情報提供者として使用するだけでよいのでしょうか? – Confused
ドットが全く動いていない場合。正確な検出を使用しないでください。それを必要とする動きのあるオブジェクトにのみ使用してください。 – Knight0fDragon
@ Confused:私は連絡先情報で行うことができます。それは実際に私が必要とする唯一のものです。私はdidBegin(_ contact:SKPhysicsContact)を使っています。それを行うための他の方法はありますか? – APvG