私は現在、書いているゲームの「テストプレーヤー」として小惑星テクスチャをロードしています。私がやろうとしているのは、小惑星の中心から三角形を撃ち、それが画面の上部に当たるまで続けることです。私の場合(私が投稿したコードからわかるように)、三角形が表示されますが、長い線になるか、同じ場所にとどまる単一の三角形になります。小惑星が動き回るとき(スペースバーを押すのをやめると消えます)、または単にまったく表示されません。私はさまざまな方法を試しましたが、ここで数式を使用できます。
私がやろうとしているのは、C#でのファイナル用のスペースインベーダークローンを作成することだけです。私はかなりうまくコーディングする方法を知っています、私の式はただ仕事が必要なだけです。
これまでのところ、これは私が持っているものです:
メインロジックコード
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(ClearOptions.Target, Color.Black, 1, 1);
mAsteroid.Draw(mSpriteBatch);
if (mIsFired)
{
mPositions.Add(mAsteroid.LastPosition);
mRay.Fire(mPositions);
mIsFired = false;
mRay.Bullets.Clear();
mPositions.Clear();
}
base.Draw(gameTime);
}
コードを描く
public void Draw()
{
VertexPositionColor[] vertices = new VertexPositionColor[3];
int stopDrawing = mGraphicsDevice.Viewport.Width / mGraphicsDevice.Viewport.Height;
for (int i = 0; i < mRayPos.Length(); ++i)
{
vertices[0].Position = new Vector3(mRayPos.X, mRayPos.Y + 5f, 10);
vertices[0].Color = Color.Blue;
vertices[1].Position = new Vector3(mRayPos.X - 5f, mRayPos.Y - 5f, 10);
vertices[1].Color = Color.White;
vertices[2].Position = new Vector3(mRayPos.X + 5f, mRayPos.Y - 5f, 10);
vertices[2].Color = Color.Red;
mShader.CurrentTechnique.Passes[0].Apply();
mGraphicsDevice.DrawUserPrimitives<VertexPositionColor>(PrimitiveType.TriangleStrip, vertices, 0, 1);
mRayPos += new Vector2(0, 1f);
mGraphicsDevice.ReferenceStencil = 1;
}
}