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网站的tile引擎教程中。
在此代码中,我如何知道相机位置和这些矢量对象值?
而且我对2d游戏的相机视图和世界观都不了解。
答案 0 :(得分: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 ) );
此视图处理相机旋转,缩放和居中位置。