没有必要去做所有的工作,浪费所有的记忆。
XNA 有一个非常精确和特定的测试对象位置的方法。
您可以简单地传入 GraphicsDeviceManager graphics.PreferredBackBufferWidth 和 Height 方法来获取窗口的宽度和高度。
从那里,您可以根据对象是否在这些位置的矩形内来了解对象是否在游戏窗口中可见。
因此,假设您将后台缓冲区的宽度和高度设置为 640x480。
然后您只需检查纹理的边界是否在该矩形内。
所以,这是你的功能:
public void CheckIfWithinWindow(int width, int height)
{
Rectangle wndRect = new Rectangle(0, 0, width, height);
Rectangle carRect = new Rectangle(carPos.X, carPos.Y, carTexture.Width, carTexture.Height);
if (wndRect.Intersects(carRect))
{
//carTexture is within currently visible window bounds!
}
else
{
//carTexture is NOT within currently visible window bounds!
}
}
然后你可以像这样在你的起始 XNA 类中从你的更新方法调用这个函数。
public void Update(GameTime gameTime)
{
myCar.CheckIfWithinWindow(graphics.PreferredBackBufferWidth, graphics.PreferredBackBufferHeight);
}
希望有帮助。玩得开心。