Combe矩形和vector运动

对于游戏开发来说,我是完全新鲜的,并且遇到了一个我不知道如何解决的问题。 我有纹理是相当大的屏幕。 所以我使用了SpriteBatch.Method,它使用矩形作为参数,允许我获得自定义大小的纹理。 但是我还需要将vector移动到特定方向。 所以我使用了使用Vector位置和浮点缩放的方法使它更小。 现在我不能检查它是否与其他对象相交或简单的宽度,高度属性。 看来我不能同时通过vector位置和矩形。 是不是有一种方法来指定一个矩形的纹理的高度/宽度被渲染和向量的位置?

有三个重载的SpriteBatch.Draw()方法可用,将适合你:

 SpriteBatch.Draw (Texture2D, Vector2, Nullable<Rectangle>, Color) SpriteBatch.Draw (Texture2D, Vector2, Nullable<Rectangle>, Color, Single, Vector2, Single, SpriteEffects, Single) SpriteBatch.Draw (Texture2D, Vector2, Nullable<Rectangle>, Color, Single, Vector2, Vector2, SpriteEffects, Single) 

在每一种情况下,第二个参数都是一个Vector2代表屏幕上应该绘制纹理的位置,第三个参数是一个(空) Rectangle ,代表要绘制的纹理部分。 您可以在MSDN页面阅读更多关于它们的信息。

如果矩形是要绘制图片的位置(目标矩形),而不是要绘制的部分纹理(源矩形),则更好的方法是在对象使用vector2移动时重新创建矩形。

例如:

 //movement code here rectangle = new Rectangle((int)position.x, (int)position.y, width, height); 

这将把位置vector2放在左上角。 你可以把它放在中心:

 rectangle = new Rectangle( (int)(position.x - (width/2)), (int)(position.y - (height/2)), width/2, height/2);