所以我制作的游戏和小行星非常相似,我不确定如何让小行星产生出屏幕。任何帮助将非常感激。下面是小行星当前代码:产卵物体不在屏幕上
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