Итак, я делаю игру очень похожей на астероиды, и я не уверен, как заставить астероиды появляться сразу же за пределами экрана. Любая помощь приветствуется. Вот текущий код для астероидов:нереста объектов вне экрана
class asteroid
{
Texture2D m_txr;
public Vector2 velocity, position;
public BoundingSphere circle;
public Rectangle rect;
public asteroid(Texture2D txr, Vector2 screen_size, Random RNG)
{
m_txr = txr;
position = Vector2.Zero;
position.X = RNG.Next(0, (int)screen_size.X);
position.Y = RNG.Next(0, (int)screen_size.Y);
circle = new BoundingSphere(new Vector3(position.X + m_txr.Width/2, position.Y + m_txr.Height/2, 0), m_txr.Width/2);
velocity = new Vector2(0, 0);
while (velocity.X == 0 || velocity.Y == 0)
velocity = new Vector2((float)RNG.NextDouble() * RNG.Next(-2, 2), (float)RNG.NextDouble() * RNG.Next(-2, 2));
rect = new Rectangle((int)position.X, (int)position.Y, m_txr.Width, m_txr.Height);
}
public void update(Vector2 screen_size)
{
circle.Center.X = position.X + m_txr.Width/2;
circle.Center.Y = position.Y + m_txr.Height/2;
rect.X = (int)position.X;
rect.Y = (int)position.Y;
position += velocity;
if (position.X > screen_size.X + m_txr.Width)
position.X = 0;
if (position.X < 0 - m_txr.Width)
position.X = screen_size.X;
if (position.Y > screen_size.Y + m_txr.Height)
position.Y = 0;
if (position.Y < 0 - m_txr.Height)
position = screen_size;
}
public void drawme(SpriteBatch sb)
{
sb.Draw(m_txr, position, Color.White);
}
}
Благодаря
Почему вы хотите, чтобы они появились за пределами экрана? во-вторых, вы ограничиваете нереста в «RNG.Next», помещая здесь размер экрана, поэтому увеличивайте этот предел, и он должен быть решен – Kyra