在XNA中,什么';s矩形宽度和纹理之间的差异';雪碧的宽度是多少?

在XNA中,什么';s矩形宽度和纹理之间的差异';雪碧的宽度是多少?,xna,textures,sprite,xna-4.0,rectangles,Xna,Textures,Sprite,Xna 4.0,Rectangles,假设您这样做了:spriteBatch.Draw(myTexture、myRectangle、Color.White) 你有这个: myTexture = Content.Load<Texture2D>("myCharacterTransparent"); myRectangle = new Rectangle(10, 100, 30, 50); myTexture=Content.Load(“myCharacterTransparent”); myRectangle=新矩形(10

假设您这样做了:
spriteBatch.Draw(myTexture、myRectangle、Color.White)

你有这个:

myTexture = Content.Load<Texture2D>("myCharacterTransparent");
myRectangle = new Rectangle(10, 100, 30, 50);
myTexture=Content.Load(“myCharacterTransparent”);
myRectangle=新矩形(10100,30,50);
好,现在我们有一个宽度为30的矩形。假设myTexture的宽度为100


那么,对于第一行,它是否使精灵的宽度为30,因为这是您设置为矩形的宽度,而
myTexture
宽度保持为100?还是精灵的宽度变为100,因为这是纹理的宽度?

绘制方法使用的矩形定义了应该在渲染目标(通常是屏幕)的哪个部分绘制纹理2D的哪个部分

例如,这就是我们使用瓷砖集的方式

class Tile
{
    int Index;
    Vector2 Position;
}

Texture2D tileset = Content.Load<Texture2D>("sometiles"); //128x128 of 32x32-sized tiles
Rectangle source = new Rectangle(0,0,32,32); //We set the dimensions here.
Rectangle destination = new Rectangle(0,0,32,32); //We set the dimensions here.
List<Tile> myLevel = LoadLevel("level1");

//the tileset is 4x4 tiles

in Draw:
spriteBatch.Begin();
foreach (var tile in myLevel)
{
    source.Y = (int)((tile.Index / 4) * 32);
    source.X = (tile.Index - source.Y) * 32;

    destination.X = (int)tile.Position.X;
    destination.Y = (int)tile.Position.Y;

    spriteBatch.Draw(tileset, source, destination, Color.White);
}
spriteBatch.End();
类平铺
{
整数指数;
矢量2位置;
}
Texture2D tileset=Content.Load(“sometiles”)//128x128块32x32大小的瓷砖
矩形源=新矩形(0,0,32,32)//我们在这里设置尺寸。
矩形目标=新矩形(0,0,32,32)//我们在这里设置尺寸。
列表myLevel=加载级别(“级别1”);
//瓷砖集为4x4瓷砖
抽签:
spriteBatch.Begin();
foreach(myLevel中的var磁贴)
{
source.Y=(int)((tile.Index/4)*32);
source.X=(tile.Index-source.Y)*32;
destination.X=(int)tile.Position.X;
destination.Y=(int)tile.Position.Y;
spriteBatch.Draw(瓷砖集、源、目标、颜色、白色);
}
spriteBatch.End();
我可能混淆了绘制方法中使用矩形的顺序,因为我在工作时是在头顶上这样做的


编辑;仅使用“源矩形”可以在屏幕的某个位置上仅绘制纹理的一部分,而仅使用“目标”可以缩放纹理以适应任何需要。

试试看!^如果您对任何3D框架有疑问,请立即尝试所有可能性(例如:纹理>矩形、纹理<矩形和纹理=矩形)。我确实尝试过,但我严重困惑。我想我真正需要知道的是矩形的实际作用以及纹理对精灵的影响。你的问题已经在这里得到了回答: