0

私は Doodle Jump を使用して、上に移動している場合はプラットフォームを通過できるジャンプのようなゲームを作成していますが、下に移動している場合はプラットフォームを通過できません。この地上のプラットホームの下に入ることができません。ただし、プレーヤーが十分に速く動いている場合、プレーヤーは図のように地上のプラットフォームを通過します。

ここに画像の説明を入力

さらに紛らわしいのは、これはジャンプの 5 回に 1 回しか発生せず、地上のプラットフォームでのみ発生することです。これは、より高いプラットフォームと同じです。もう1つ珍しいのは、プレイヤーが地下にいる場合、画像が完全に地下にあるにもかかわらず、敵が地面にいるかのようにヒットを適切に検出することです. t 同期。

そのプラットフォームと地面を表すためにstatic を使用し、プレイヤーを表すためにSKPhysicsBodydynamicを使用しています。プラットフォーム用とプレーヤー用がありますSKPhysicsBody。私も両方持っています。どちらも長方形を使用して物理ボディを実装し、プラットフォームの厚さは 2 です。platform.physicsBody?.collisionBitMask = PhysicsCategory.Playerplayer.physicsBody?.collisionBitMask = PhysicsCategory.PlatformsphysicsBody?.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 を調整しようとすると、まったく更新されず、地面の下に閉じ込められたままになります!

ここで何が起こっているかについてのアイデアはありますか?私は機知に富んでいます。前もって感謝します!

4

0 に答える 0