0

これが私の状況です。プログラミングは初めてで、非常に基本的なプラットフォーム ゲームの作成を始めたばかりです。文字通り、プラットフォームを備えたゲームを意味します。

キャラクターを乗せて飛び回らせ、プラットフォームを配列として作成しました。これは、それらをすべて下に並べて配置できるようにするためでした。問題を回避するためにこれを行う方法は他にもありますが、配列に対してそれを行う方法を知りたいと思いました。

だから私はこれで私のキャラクターを倒しました

kirby.yVelocity += 1.0f 

これで問題ありませんが、アレイ内のいずれかのプラットフォームにヒットしたときに、yVelocity を 0.0f にしたいと考えています。

だから私はこのコードを試しました

if (plat[i].drawRect.Intersects(kirby.drawRect))
{
kirby.yVelocity = 0.0f
}

これはうまくいくと思いましたが、[i] のエラーが表示され、このコンテキストでは適用できないというエラーが表示されます。

いくつかのメモ:

kirby は私のキャラクター名、drawRect は Rectangle の定義、plat は 13 のプラットフォームで構成される私の Platform 配列です。

助けてくれる人に感謝します


アップデート

問題は、plat.drawRect または plat[i].drawRect のバリエーションが機能しないことです。プラットフォーム配列に関連するすべてのコードを次に示します。

 struct Platform
    {
        public Texture2D txr;
        public Rectangle drawRect;
    }

Platform[] plat;

   plat = new Platform[13];
           for (int i = 0; i < plat.Length; i++)
           {
               plat[i].txr = Content.Load<Texture2D>("platform");
               plat[i].drawRect = new Rectangle(i * plat[i].txr.Width, 460, plat[i].txr.Width, plat[i].txr.Height);`
           }

 for (int i = 0; i < plat.Length; i++)
            {
                spriteBatch.Draw(plat[i].txr, plat[i].drawRect, Color.White);
            }
            spriteBatch.End();
4

1 に答える 1

0

プラットフォームをループするには、for ループを追加する必要があるようです。多分このように:

for(Platform : plat){
    if (platform.drawRect.Intersects(kirby.drawRect)){
        kirby.yVelocity = 0.0f;
    }
}

ここでは、Java を使用していてPlatform、 がクラス を持つプラット配列のクラスであると想定していますList<Platform>

于 2013-02-19T21:55:13.710 に答える