2016-05-28 7 views
0

私は2Dプラットフォームを構築しています。レベルごとに異なる色の背景が必要です。私はMonogame - 背景色のエラーを変更する

protected override void Update(GameTime gameTime){ 

    if (player.Bounds.Intersects(teleportObj.Bounds)) 
    { 
     GraphicsDevice.Clear(Color.SlateGray); // fails to change bg color 
     player.Position = new Vector2(172, 0); // successfully changes character position 
     MediaPlayer.Play(dungeonSong); // successfully plays new song 
     MediaPlayer.IsRepeating = true; // successfully repeats new song 
    } 
} 

は、私はすでに中に開始する最初のレベルの背景を設定している...それはそうのように、player.Positionを変更することにより、次のレベルに文字を配置し、衝突しているオブジェクトを作りましたこのようなGame1のDraw()機能:

GraphicsDevice.Clear(Color.CornflowerBlue); 

しかし、私のプレイヤーがteleportObjと衝突したとき、背景色が変更されません。

答えて

1

GraphicsDevice.Clear(Color.SlateGray);は、Drawで使用されます。新しいColor変数を作成し、その変数をUpdateメソッドで変更し、GraphicsDevice.Clear(name of the variable);を使用する場合は、Draw関数で使用してください。そのため

コードは次のようになります。

Color backgroundColor = Color.CornflowerBlue; 
protected override void Update(GameTime gameTime) 
{  
    if (player.Bounds.Intersects(teleportObj.Bounds)) 
    { 
     backgroundColor = Color.SlateGray; 
     player.Position = new Vector2(172, 0); 
     MediaPlayer.Play(dungeonSong); 
     MediaPlayer.IsRepeating = true; 
    } 
    else backgroundColor = Color.CornflowerBlue; 
} 

protected override void Draw(SpriteBatch spriteBatch) 
{  
    GraphicsDevice.Clear(backgroundColor); 
    *draw other stuff* 
}