Я искал учебник о том, как это сделать правильно, и Google продолжает оставаться пустым. Может быть, это очень простой предмет, но я не уверен, что делать.Поверните плеер в XNA
То, что я нашел до сих пор дает мне код, который выглядит следующим образом:
if (currentKeyboardState.IsKeyDown(Keys.A))
{
RotationAngle += 0.01f;
float circle = MathHelper.Pi * 2;
RotationAngle = RotationAngle % circle;
}
Только, это не делает много. Он исходил от MSDN. Это было лучшее решение, которое я мог найти.
Все, что я хочу сделать, это позволить игроку вращаться вокруг корабля и стрелять в другом направлении. Я делаю игру, которая имеет справедливое сходство с астероидами, но я могу снимать только в одном направлении.
Любая помощь будет оценена :)
Edit: Это мои текущие Player.cs:
using System;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
namespace GameTest
{
class Player
{
public Texture2D PlayerTexture;
public Vector2 Position;
public bool Alive;
public int Health;
public Vector2 origin;
public float RotationAngle;
KeyboardState currentKeyboardState;
KeyboardState previousKeyboardState;
public int Width
{
get { return PlayerTexture.Width; }
}
public int Height
{
get { return PlayerTexture.Height; }
}
public void Initialize(Texture2D texture, Vector2 position)
{
PlayerTexture = texture;
Position = position;
Alive = true;
Health = 10;
origin.X = PlayerTexture.Width/2;
origin.Y = PlayerTexture.Height/2;
}
public void Update(GameTime gameTime)
{
RotationAngle += 10f;
previousKeyboardState = currentKeyboardState;
currentKeyboardState = Keyboard.GetState();
float elapsed = (float)gameTime.ElapsedGameTime.TotalSeconds;
if (currentKeyboardState.IsKeyDown(Keys.A))
{
//float circle = MathHelper.Pi * 2;
//RotationAngle = RotationAngle % circle;
}
if (currentKeyboardState.IsKeyDown(Keys.D))
{
//rotation
}
}
public void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(PlayerTexture, Position, null, Color.White, RotationAngle, origin, 1f, SpriteEffects.None, 0f);
}
}
}
Используете ли вы этот «RotationAngle» при рисовании спрайта на экране? Я уверен, что «SpriteBatch» имеет перегрузки, которые могут или не требуют поворота. – Nolonar
Что вы подразумеваете под словом «это не так много»? Прокручивается ли игрок? Вам теперь нужно разобраться, как стрелять под углом, например? –
Я использую его в 'SpriteBatch', да. И я имею в виду, что он не вращает спрайт вообще, он ничего не делает на данный момент. –