1

キャラクターが落下し、スプライト プラットフォームに向かっていると仮定し、衝突が検出されたらキャラクターが着地したことをフラグします。キャラクターの位置をリセットする最良の方法は何ですか?彼はまだそれを切り取っていますか?

私の懸念は、キャラクターがプラットフォームの四角形の上にある場合、彼が何も触れていないために関数 fall() が呼び出されることと、キャラクターがプラットフォームの四角形をクリッピングしている場合、jump() 関数が妨げられる可能性があることです。離陸するとすぐに着陸したと思うかもしれないからです。明らかに、どちらにも回避策がありますが、もしあれば、私は本当にコンベンションを探しています。

(必要に応じてコードを投稿できますが、コードは問題ではありません。私は本当に正しい方法を探しているだけです)

ありがとう、

マイク

4

1 に答える 1

1

fall()二度と呼び出されないように、彼にプラットフォームに触れてもらいます。

また、キャラクターがプラットフォームの長方形をクリップしている場合、離陸するとすぐに着地したと見なされる可能性があるため、jump()関数が妨げられる可能性があります。

jump()関数では、文字を移動するときに、最小xピクセル移動するまで停止できないようにします。

これを行うにFalseは、最初にブール値を作成し、xピクセルがトラバースされた後にjump()それを作成するためのカウンターを設定します。Truexが、キャラクターがプラットフォームのクリッピングを停止するのに十分であり、他のものと衝突する可能性があるように多すぎないことを確認してください。

xピクセル移動したら、衝突テストを開始して、キャラクターが再び何かに当たったときを確認します。

したがって、たとえば:

MINIMUM_DISTANCE = x 
# ^ how many pixels you want to move to stop clipping

count = 0 #used for counting

def jump():
    global count
    in_air = False
    #do your movements here, and increase count each time you move a pixel
    if count >= MINIMUM_DISTANCE: in_air=True
    if in_air:
        #collision detection here
        #once there is a collision:
        if collision:
            count = 0
    return

そして、将来の参考のために、コード関連のエラーでなくても、持っているコードを投稿することをお勧めします。あなたのアプローチを見て、感じてもらうためです

私が助けることができることを願っています

于 2012-06-15T19:17:16.443 に答える