私は Doodle Jump を使用して、上に移動している場合はプラットフォームを通過できるジャンプのようなゲームを作成していますが、下に移動している場合はプラットフォームを通過できません。この地上のプラットホームの下に入ることができません。ただし、プレーヤーが十分に速く動いている場合、プレーヤーは図のように地上のプラットフォームを通過します。
さらに紛らわしいのは、これはジャンプの 5 回に 1 回しか発生せず、地上のプラットフォームでのみ発生することです。これは、より高いプラットフォームと同じです。もう1つ珍しいのは、プレイヤーが地下にいる場合、画像が完全に地下にあるにもかかわらず、敵が地面にいるかのようにヒットを適切に検出することです. t 同期。
そのプラットフォームと地面を表すためにstatic を使用し、プレイヤーを表すためにSKPhysicsBody
dynamicを使用しています。プラットフォーム用とプレーヤー用がありますSKPhysicsBody
。私も両方持っています。どちらも長方形を使用して物理ボディを実装し、プラットフォームの厚さは 2 です。platform.physicsBody?.collisionBitMask = PhysicsCategory.Player
player.physicsBody?.collisionBitMask = PhysicsCategory.Platforms
physicsBody?.usesPreciseCollisionDetection = true
私はすべてを試しましたが、これを修正できるものはないようです。これがdidSimulatePhysics()
.
override func didSimulatePhysics() {
if self.player.position.y <= 1/7 * size.height {
player.position.y = 1/7*size.height //+ CGFloat(yScaler) * size.height
if let body = player.physicsBody {
if body.velocity.dy < 0 {
self.player.physicsBody?.velocity.dy = 0
}
}
}
}
didSimulatePhysics()
これがいつ発生したかを適切に検出しますが、player.position.y を調整しようとすると、まったく更新されず、地面の下に閉じ込められたままになります!
ここで何が起こっているかについてのアイデアはありますか?私は機知に富んでいます。前もって感謝します!