衝撃ジャンプ
私を困惑させていることが1つあります。それは、プラットフォーマーで「フェイクインパルス」ジャンプを実装する方法です。私が何を話しているのかわからない場合は、マリオ、カービー、Cave Storyからの引用のジャンプを考えてください。彼らの共通点は何がありますか?さて、ジャンプの高さは、ジャンプボタンを押し続けている時間によって決まります。 これらのキャラクターの「インパルス」は、実際の物理学のようにジャンプする前ではなく、空中で構築されていることを知っています-つまり、最大高さの途中で指を非常にうまく持ち上げることができ、それとフルストップの間の減速。ホップをタップして長押しするだけでいいのは、そのためです。彼らが軌道をアークとして保持していることに魅了されます。 私の現在の実装は次のように機能します: ジャンプボタンを押している間、重力はオフになり、アバターのY座標は重力の一定値だけ減少します。たとえば、物がティックごとにZ単位で落ちる場合、ティックごとにZ単位上昇します。 ボタンを放すか、制限に達すると、アバターは、速度が0に達するまでXユニットをカバーする量で減速します。一度、速度が重力に一致するまで加速します-例に固執すると、Xユニットをカバーしながら0からZユニット/ティックまで加速すると言えます。 ただし、この実装では、ジャンプが対角線になりすぎ、アバターの速度が重力よりも速くない限り、現在のプロジェクトでは速度が速すぎます(ティックごとに約4ピクセルで移動し、重力はティックごとに10ピクセルです) 40FPSのフレームレート)、水平よりも垂直になります。プラットフォーマーに精通している人は、ゲームの重力ほど速くなくても、キャラクターのアークジャンプはほとんど常に彼らがさらにジャンプすることを可能にし、それが正しくプレイされない場合、それ自体が証明されることに気付くでしょう非常に直感に反します。私の実装が非常に迷惑であることを証明できたので、私はこれを知っています。 誰かが同様のメカニズムを試したことはありますか?この種のプラットフォーマージャンプの背後にあるものを知りたいです。事前にこれを経験したことがなく、試してみたい場合は、説明された実装を修正または強化しようとしないでください、私が正しい方法でなかった場合-から解決策を作ってみてくださいスクラッチ。これらの擬似インパルスがどのように機能するかを示している限り、重力、物理学、その他を使用するかどうかは気にしません。 また、言語固有のコーディングを避けるためにそのプレゼンテーションが欲しいです。たとえば、C ++の例を共有したり、Delphiを使用したりします。プロジェクトにXNAフレームワークを使用していて、C#のことを気にしない限り、他のコードを読むのに忍耐はありません。他の言語の特定のゲーム開発者はここで達成することに興味があるので、擬似コードにこだわる必要はありません。 よろしくお願いします。