2Dプラットフォームのゲームジャンプ


7

私は現在、XNAでC#を使用するゲームを書いています。スプライトをロードしました。キャラクターが右に動くと彼は右に走っているように見え、左に動くと彼は左に走っているように見えます。

私はどこでもジャンプ能力を作成するための良いコーディング例を探していました。私は立つことができるすべての物理的なものを読みました、そして言うにはスペースバーを使用してジャンプする方法がわからないときは助けにはなりませんが、着地するまでもう一度ジャンプするだけでスペースを使用することを防ぐことができません。

回答:


8

変数canJumpを作成し、スプライトがジャンプ可能なサーフェス上にある場合は常にtrueに設定します。フレームごとに負のy速度を使用している場合は、衝突検出によって地面からの落下を防ぐことができるので、プレーヤーのスプライトが地形と衝突するたびにcanJumpを設定できます。プレーヤーがジャンプするときはいつでもcanJumpをfalseに設定し、衝突検出によって変更されるまでそのままにします


3

これを定義します。

int gravity = 2, jump=50, spX=20,spY=20, surface=200;
bool click = false;
bool canJump = true;
Texture2D sprite;
MouseState m;

- -更新 - -

m = Mouse.GetState();

        if (spY < surface)
        {
            spY += gravity;
        }
        else
        {
            if (spY == surface)
            {
                canJump = true ;
            }
        }
        if (m.LeftButton == ButtonState.Pressed)
        {
            click = true;
        }
        if ((click) && (m.LeftButton == ButtonState.Released))
        {
            if (canJump)
            {
                click = false;
                spY -= jump;
                canJump = false;
            }
        }

--- EndUpdate ---

- -ドロー - -

spriteBatch.Draw(sprite,new Vector2(spX,spY),Color.White);

--- EndDraw ---

私はそれを試してみました、それはうまくいきます


2

このチュートリアルをご覧ください。http//www.xnadevelopment.com/tutorials/thewizardjumping/thewizardjumping.shtml このサイトには、XNAに関連する本当に便利なチュートリアルもたくさんあります。


XNADevelopmentは素晴らしいサイトです。
共産主義者のアヒル

そのサイトは私が探していたものでした。私は理解を得て、それが私が望んでいる方法でも機能するようになったので、重力に対処できます。
Bradley Kreuger、2011

0

過去に私がやったことは、キャラクターに各方向の速度を保持させることです。ジャンプが必要なときは、単にvel_y-=(ここでジャンプ速度)と言います。そしてもちろん、私は一定の重力を持っています。

実装を検討すべきもう1つの本当に優れた機能は、「ボタンを長く押し続けるほど高くなる」という概念全体です。ゲームが単一の定数変数をジャンプするだけのときは嫌いで、ある程度の制御感を得ることができません。

ああ、壁のジャンプはかっこいい=]

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.