Итак, я увидел несколько обучающих программ, используя прямоугольник в виде массива. Но их оккупанты не оживлены. Я использую spritesheet для моих захватчиков, и мне нужно, чтобы они все были анимированы ... Как это сделать?C# XNA - Создание массива космических захватчиков
Вот мой захватчик класс:
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
namespace SpaceInvaders
{
class botInvaders
{
public botInvaders()
{
}
public static Texture2D BotInvaderTex;
Rectangle BotInvaderHitBox;
public static Vector2 BotInvaderPos = new Vector2(0, 28), BotInvaderOrigin;
int BotInvaderCurrentFrame = 1, BotInvaderFrameWidth = 52, BotInvaderFrameHeight = 88;
float Timer = 0f, Interval = 100f;
public void Initialize()
{
}
public void LoadContent(ContentManager Content)
{
BotInvaderTex = Content.Load<Texture2D>(".\\gameGraphics\\gameSprites\\botInvaders\\normalInvaders\\invaderShip1");
}
public void Update(GameTime gameTime)
{
BotInvaderHitBox = new Rectangle(BotInvaderCurrentFrame * BotInvaderFrameWidth, 0, BotInvaderFrameWidth, BotInvaderFrameHeight);
BotInvaderOrigin = new Vector2(BotInvaderHitBox.X/2, BotInvaderHitBox.Y/2);
Timer += (float)gameTime.ElapsedGameTime.Milliseconds;
if (Timer > Interval)
{
BotInvaderCurrentFrame++;
Timer = 0f;
}
if (BotInvaderCurrentFrame == 2)
{
BotInvaderCurrentFrame = 0;
}
BotInvaderHitBox = new Rectangle(BotInvaderCurrentFrame * BotInvaderFrameWidth, 0, BotInvaderFrameWidth, BotInvaderFrameHeight);
BotInvaderOrigin = new Vector2(BotInvaderHitBox.Width/2, BotInvaderHitBox.Height/2);
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(BotInvaderTex, BotInvaderPos, BotInvaderHitBox, Color.White, 0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0);
}
}
}
Это показывает, как анимировать захватчикам. Могу ли я получить часть модифицированного кода, чтобы было 5 строк захватчиков и 10 колонок? Я могу сам сделать движение, мне нужен только массив. Заранее спасибо!
Я знаю, как создать массив, но мне нужен код для добавления * анимированных * захватчиков к нему. – PowerUser
Лучшим способом было бы инкапсулировать весь материал захватчика в свой класс. Скажем, вы называете это «Invader». Затем у вас будет 'Invader [] array = new Invader [10,5]', а в цикле обновления вы можете вызвать 'array [x, y] .Update (gameTime)' и в методе Draw() вы могли бы вызов 'array [x, y] .Draw (spriteBatch)' – itsme86
@ itsme86 Вы должны опубликовать это как ответ ... – BradleyDotNET