2011-09-01 136 views
0
Vector2 firstSquare = new Vector2(camera.location.X/Tile.tilewidth, camera.location.Y/Tile.tileheight); 
int firstX = (int)firstSquare.X; 
int firstY = (int)firstSquare.Y; 

Vector2 squareOffset = new Vector2(camera.location.X % Tile.tilewidth, camera.location.Y % Tile.tileheight); 
int offsetX = (int)squareOffset.X; 
int offsetY = (int)squareOffset.Y; 

此代码是从xna resources.com网站瓷砖引擎教程。XNA游戏工作室4.0使用C#

在这段代码中,我怎么能知道相机的位置和这些矢量对象值?

而且我也不知道相机视图和世界观与各自的2D游戏。

回答

0

想象一下,您正在处理一台真实的相机,并且您正瞄准一扇门,如果您将相机移动到右侧,相机会向您显示门正在向左移动...

门不动,你只是移动相机。

此操作由相机的视图变换处理。

XNA提供一种方式来创建该视图通过Matrix.CreateLookAt

虽然变换2D相机使用该:

View = Matrix.CreateTranslation(new Vector3(-_position, 0)) 
         * Matrix.CreateRotationZ(_rotation) 
         * Matrix.CreateScale(new Vector3(_scale, _scale, 1)) 
         * Matrix.CreateTranslation(new Vector3(ViewportScreen.X + ViewportScreen.Width * 0.5f, ViewportScreen.Y + ViewportScreen.Height * 0.5f, 0)); 

此视图手柄照相机旋转,缩放,和居中就位。