Возможно, вы захотите использовать DrawableGameObject
public class Snowman : DrawableGameObject
{
private Camera cam = new Camera();
//Model snowMan;
//Matrix[] snowManMatrix;
public Model snowMan {get;set;};
public Matrix[] snowManMatrix{get;set;};
protected override void LoadContent()
{
//snowMan = Content.Load<Model>( "Models\\snowman" );
snowManMatrix = new Matrix[ snowMan.Bones.Count ];
snowMan.CopyAbsoluteBoneTransformsTo( snowManMatrix );
}
public void DrawSnowMan(Model model, GameTime gameTime)
{
foreach (ModelMesh mesh in model.Meshes)
{
Matrix world, scale, translation;
scale = Matrix.CreateScale(0.02f, 0.02f, 0.02f);
translation = Matrix.CreateScale(0.0f, 0.7f, -4.0f);
world = scale * translation;
foreach (BasicEffect effect in mesh.Effects)
{
effect.World = snowManMatrix[mesh.ParentBone.Index] * world;
effect.View = cam.viewMatrix;
effect.Projection = cam.projectionMatrix;
effect.EnableDefaultLighting();
}
mesh.Draw();
}
}
protected override void Draw(GameTime gameTime)
{
DrawSnowMan( snowMan, gameTime );
}
}
в Game1.cs
Инициализировать
Snowman snowDude= new Snowman();
Components.Add(snowDude);
И переместить
//snowDude = Content.Load<Model>( "Models\\snowman" );
snowDude.snowMan = Content.Load<Model>( "Models\\snowman" );
в LoadContent Game1
Добавление к компонентам означает, что обновление и рисование snowDude вызываются всякий раз, когда используется Game1.Честно говоря, я не на 100% в каком порядке.Я считаю, что Load Content также следует вызывать, но я думаю, что лучше (по крайней мере, пока вы учитесь) импортировать все ваши звуки / анимации / спрайты в одном месте (в вашем основном файле), чтобы вы точно зналичто и когда вызывается.
ИЛИ вместо Components.Add (snowDude);
Вы можете просто вызвать snowDude.Draw (gametime) в методе рисования в Game1.и snowDude.Update () в методе обновления Game1.
В остальном я согласен с Brent.Если есть только снеговики, то у вас будет хорошо только с одним классом, но если вы начнете добавлять больше, будет много совпадений, поэтому создайте вражеский класс
public class Enemy: DrawableGameObject{}
и измените SnowMan на
public class SnowMan:Enemy{}
должно быть уместно.