Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2011, 23:53   #1
Renat21
Пользователь
 
Регистрация: 04.02.2011
Сообщений: 12
По умолчанию Работа с анимированными спрайтами в XNA GS 4.0

Доброе время суток! Не могу разобраться с одной проблемой У меня есть несколько спрайтов Один из них я делаю анимированной (привожу в движение) Все работает замечательно!!! Но вот возникла такая проблемка: я хочу этот же самый спрайт размножить, т.е. чтобы на основном фоне было к примеру штук 5 таких анимированных спрайтов, но уже с разными координатами
Вот часть кода из класса MyGame:

protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.

spriteBatch = new SpriteBatch(GraphicsDevice);
Picture1 = Content.Load<Texture2D>("Content//Textures//Часть1");
idleTexture = Content.Load<Texture2D>("Content//Textures//Птичка1");
runTexture = Content.Load<Texture2D>("Content//Textures//BirdFly");
bird = new AnimatedSprite[5];
for (int i = 0; i < bird.Length; i++)
{
y = Rnd.Next(30, 300);
rect = new Rectangle(x - 90, y, 90, 60);
bird[i] = new AnimatedSprite(rect, idleTexture, runTexture);
}
}
Часть кода класса AnimatedSprite:

public AnimatedSprite(Rectangle rect,Texture2D idle, Texture2D run)
{
this.rect = rect;
this.runTexture = run;
this.idleTetxture = idle;
frameWidth = 90;
frameHeight = run.Height;
x = run.Width;
Rnd = new Random();
y = Rnd.Next(30, 300);
dx = dy = 10;
}

public void Update(GameTime gameTime, int Width)
{
if (isLife)
{
timeElapsed += gameTime.ElapsedGameTime.Millisecon ds;
if (timeElapsed > timeForFrame)
{
timeElapsed = 0;
currentFrame = (currentFrame + 1) % FrameCount;

x = x - dx;
if (x <= -100)
{
x = Width;
y = Rnd.Next(30, 300);
}

rect.Location = new Point(x, y);
}
}
}

public void Draw(SpriteBatch spriteBatch)
{
if (isLife)
{
sourceRect = new Rectangle(frameWidth * currentFrame, 0, frameWidth, frameHeight);
spriteBatch.Draw(runTexture,rect, sourceRect, Color.White);
}
else
{
spriteBatch.Draw(idleTetxture, rect, Color.White);
}
}

Последний раз редактировалось Renat21; 07.07.2011 в 00:03.
Renat21 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
XNA: DrawPrimitives() ds.Dante C# (си шарп) 2 29.06.2011 17:59
XNA dampirik Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 22.06.2011 01:59
составление Библиотеки процедур для работы со спрайтами TransSpr в turbo pascale 7.0 сергей12345 Помощь студентам 0 27.03.2011 15:49
XNA 4, C# stck C# (си шарп) 1 01.02.2011 04:28
C# XNA Cpluser Общие вопросы .NET 1 19.12.2009 15:07