私は最初の 2D アップダウン スクローラーを実際に試していますが、背景サイズを完全に機能させることができないようです。なんらかの理由で小さいままで、何の役にも立ちません。視差スクロール クラスの最初に、変数を初期化するように言われたと思いますが、どれを変更する必要があるかはわかっています。
public Texture2D picture;
public Vector2 position = Vector2.Zero;
public Vector2 offset = Vector2.Zero;
public float depth = 0.0f;
public float moveRate = 0.0f;
public Vector2 pictureSize = Vector2.Zero;
public Color color = Color.White;
現在のサイズがこれになるので、それを大きくするには、pictureSize を変更する必要があると思います。
最後の質問は、船の画像から空白を削除するにはどうすればよいですか? ありがとう!さらにコードが必要な場合は教えてください。コードを入れなかった理由は長さのためです。
EDIT*: 実際の船をレンダリングするためのコードは次のとおりです。
public void Render(SpriteBatch batch)
{
batch.Begin();
batch.Draw(shipSprite, position, null, Color.White, 0.0f, spriteOrigin, 1.0f,
SpriteEffects.None, 0.0f);
batch.End();
}
フォトショップを使用して何度かクリアしたので、空白はXNAによって提供されているようです。私はサイトに直接アップロードできないので、ここに置きました : http://www.justbeamit.com/nk95n
public void Draw()
{
layerList.Sort(CompareDepth);
batch.Begin();
for (int i = 0; i < layerList.Count; i++)
{
if (!moveLeftRight)
{
if (layerList[i].position.Y < windowSize.Y)
{
batch.Draw(layerList[i].picture, new Vector2(0.0f,
layerList[i].position.Y), layerList[i].color);
}
if (layerList[i].position.Y > 0.0f)
batch.Draw(layerList[i].picture, new Vector2(0.0f,
layerList[i].position.Y - layerList[i].pictureSize.Y),
layerList[i].color);
else
batch.Draw(layerList[i].picture, new Vector2(0.0f,
layerList[i].position.Y + layerList[i].pictureSize.Y),
layerList[i].color);
}
else
{
if (layerList[i].position.X < windowSize.X)
{
batch.Draw(layerList[i].picture, new Vector2(layerList[i].position.X,
0.0f), layerList[i].color);
}
if (layerList[i].position.X > 0.0f)
batch.Draw(layerList[i].picture, new Vector2(layerList[i].position.X -
layerList[i].pictureSize.X, 0.0f), layerList[i].color);
else
batch.Draw(layerList[i].picture, new Vector2(layerList[i].position.X +
layerList[i].pictureSize.X, 0.0f), layerList[i].color);
}
}
batch.End();
}
^これは私のコードではなく、XNAの実行方法について読んでいる本からのものです(C#での最初の試み:/)