所以我製作的遊戲和小行星非常相似,我不確定如何讓小行星產生出屏幕。任何幫助將非常感激。下面是小行星當前代碼:產卵物體不在屏幕上
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