Modelleri herhangi bir programdan Xna e aldigimiz zaman model tipki tasarladigimiz renklerdedir.Cunku herhangi bir renk degisimi vermedik ve DiffuseColoru default olarak White dir.
Bir modeli cizim aninda rengini degistirmemiz icin
effect.DiffuseColor=Red; kod parcasini modeli cizdirdigimiz koda ekloemeliyiz.Ornegin bir bina diger binayla kesisiyorsa rengini kirmizi yapip bunu kullaniciya belirtmek istiyoruz.
Ana kod ekraninda
If(building.Kesisiyormu(AllBuildings))
Building.color=Color.Red;
else
Building.color=Color.White;
public void DrawBuilding(Building b, Vector3 pos)
{
foreach (ModelMesh mesh in b.model.Meshes)
{
foreach (BasicEffect effect in mesh.Effects)
{
effect.EnableDefaultLighting();
effect.PreferPerPixelLighting = true;
effect.DiffuseColor = b.buildingcolor;
effect.World = Matrix.CreateScale(b.scale)*Matrix.CreateFromYawPitchRoll(b.rotation.X, b.rotation.Y,b.rotation.Z) * Matrix.CreateTranslation(pos) ;
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45), aspect, 1,
effect.View = Matrix.CreateLookAt(cameraview, lookAt, Vector3.Up);
}
mesh.Draw();
}
}
Hiç yorum yok:
Yorum Gönder