Автор Сообщение
Пост N: 3
Зарегистрирован: 22.03.09
Рейтинг:
0
Отправлено: 25.04.09 13:44. Заголовок: Основы для создания двух мерной игры в XNA Game Studio
Доброго дня всем! Скажите пожалуйста какие есть способы для поворота спрайта? Если можно, то объясните по подробнее. И как можно добиться чтобы при управлении спрайтом, он двигался в ту сторону в которую направлен? С уважением, Виталий!
Ответов - 5
[только новые ]
Пост N: 4
Зарегистрирован: 22.03.09
Рейтинг:
0
Отправлено: 07.05.09 14:27. Заголовок: Доброго дня всем!
Нашёл один способ поворота спрайта, но в нём не всё ещё понятно! Скажите пожалуйста как можно регулировать скорость поворота спрайта в этом примере? С уважением, Виталий! namespace rotation { public class Game1 : Microsoft.Xna.Framework.Game { GraphicsDeviceManager graphics; SpriteBatch spriteBatch; KeyboardState keyboardState; Texture2D texture; Vector2 position; Vector2 origin; public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content/Texture"; } protected override void Initialize() { base.Initialize(); } protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); texture = Content.Load<Texture2D>("sprite"); Viewport viewport = graphics.GraphicsDevice.Viewport; origin.X = texture.Width / 2; origin.Y = texture.Height / 2; position.X = viewport.Width / 2; position.Y = viewport.Height / 2; } protected override void UnloadContent() { } private float RotationAngle = 0f; protected override void Update(GameTime gameTime) { keyboardState = Keyboard.GetState(); float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; if (keyboardState.IsKeyDown(Keys.D)) { RotationAngle += elapsed; } if (keyboardState.IsKeyDown(Keys.A)) { RotationAngle -= elapsed; } base.Update(gameTime); } protected override void Draw(GameTime gameTime) { graphics.GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); spriteBatch.Draw(texture, position, null, Color.White, RotationAngle, origin, 1.0f, SpriteEffects.None, 0f); spriteBatch.End(); base.Draw(gameTime); } } }
Пост N: 412
Зарегистрирован: 01.11.06
Откуда: Москва
Рейтинг:
1
Отправлено: 08.05.09 09:05. Заголовок: Скорость поворота ре..
Скорость поворота регулируется в методе Update. Используйте вместо float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds; следующий код float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds * speed; Присвойте переменной speed значение в диапазоне от 0 до 1. Чем больше значение, тем выше скорость.
Пост N: 5
Зарегистрирован: 22.03.09
Рейтинг:
0
Отправлено: 08.05.09 09:42. Заголовок: Огромное спасибо net..
Огромное спасибо netlib! И ещё один вопрос можно? Как сделать чтобы при движении спрайт двигался в ту сторону, в которую направлен? Я знаю что надо создать вектор направления и вращяь вместе с этим спрайтом и для движения складывать позицию и этот вектор. Не подскижите ли как это зписать! Заранее спасибо!
Пост N: 65
Зарегистрирован: 14.06.07
Откуда: РОССИЯ, Санкт-Петербург (Екатиренбург)
Рейтинг:
0
Отправлено: 09.05.09 10:21. Заголовок: if (timer < TIME..
if (timer < TIME_MOVE) { float f = timer / all_time_move; pos = pos_begin * (1 - f) + pos_end * f; timer += delta_time; } else { pos = pos_end; }
Пост N: 7
Зарегистрирован: 22.03.09
Рейтинг:
0
Отправлено: 09.05.09 15:39. Заголовок: Огромное спасибо, вс..
Огромное спасибо, всё работает!
Ответ:
1
2
3
4
5
6
7
8
9
показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:
зарегистрироваться