モデルの点滅

■よく、ゲームでダメージを受けると、赤くなったりします。
今回は、モデルデータが赤く点滅するサンプルです。

protected override void Draw(GameTime gameTime)
{
    float dColor = (float)Math.Sin(dAng * 8) / 2.0f + 0.5f; //dColorは 0.0f〜1.0f の間で変化します。

    graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
    foreach (ModelMesh mesh in model.Meshes)
    {
        foreach (BasicEffect effect in mesh.Effects)
        {
            effect.View = mainView;
            effect.Projection = mainProjection;
            effect.World = mainWorld;
            effect.DiffuseColor = new Vector3(1.0f, dColor, dColor);
        }
        mesh.Draw();
    }
    base.Draw(gameTime);
}

■基本的には、ディフューズカラーを操作して、モデル全体の色を変化させます。

effect.DiffuseColor = new Vector3(1.0f, dColor, dColor);

この状態は、元の色で表示され

effect.DiffuseColor = new Vector3(1.0f, 1.0f, 1.0f);

この状態だと、赤色成分のみ残り、表示されます。

effect.DiffuseColor = new Vector3(1.0f, 0.0f, 0.0f);

1.0fは赤色成分で他の成分を0.0fにする事で赤以外が表示されないようになって行きます。
■こんな感じ

女の子の絵の部分が赤くなっています。
ただ、女の子の周りが黒いのは、アルファ値が0の為、ディフューズカラーに影響されない状態になっています。