モデルの点滅
■よく、ゲームでダメージを受けると、赤くなったりします。
今回は、モデルデータが赤く点滅するサンプルです。
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の為、ディフューズカラーに影響されない状態になっています。