2016-03-25 10 views
0

私は現在、C#のスーパーマリオワールドのリメイクに取り組んでいます。私たちは、大きく働いジャンプしまったC#XNA 2D Platformerジャンピングの問題

、少なくとも、それは上下に行く...事がある、よく、自分の目で確かめてください:ここでは

https://gyazo.com/f49886ea48a0653b801d6c0741709fea は、問題のアニメーションGIFです。

非常に速く、ほぼ即座にブーストし、次にゆっくりと滑ります。私は重力とジャンプブーストの値を変更しようとしましたが、滑空を部分的に修正したにもかかわらず、ほとんどテレポートしません。多分あなたの一つは、私が間違って行く場所を確認するために私を助けることができる、私は問題を見つけることができませんhttp://pastebin.com/bCjCB2q8

:私はここに

がいっぱいプレイヤークラスです...ジャンプを滑らかに見えることはできません私の考え方で?

答えて

1

通常、アクセラレーションとベロシティ(Vector2)で基本的なニュートン移動を実装します。

すべてのアップデートで、加速= Vecotr2.Down * Gravityから始めます。 あなたは で終わります。Velocity + = Acceleration * gameTime; 位置+ =速度*ゲーム時間;

gameTime =最終更新からの合計経過秒数。これは、加速と速度の数値を人間にとって意味のある一貫した枠内にとどめるために重要です。基本的に加速度は毎秒の速度変化であり、速度は毎秒の位置変化である。

ジャンプするには、Acceleration.Y = JumpSpeed/gameTimeを設定します。 // JumpSpeed =望ましい上向きの速度。速度を計算するときに/ gameTimeは* gameTimeをゼロにします。

この回答は少し薄いかもしれません。私は職場から家に帰ると、私は飾ることができます:)

+0

ありがとうございました!私はこの情報で何ができるのかを見て、もう一度ありがとう!私はあなたの更新を保つ:)編集:あなたは '加速= Vector2.Down *重力とはどういう意味ですか? Vector2.Downとは何ですか? –

+0

申し訳ありませんが、Vector2とVector3:Pを混合するだけで、Acceleration = new Vector2(0f、Gravity)を使用することもできます。 –