我一直在尝试使用 Matrix.CreateScale() 函数来放大和缩小我的对象,如下所示:
Matrix.CreateScale(new Vector3(Zoom, Zoom, 0))
但是,我注意到,当我尝试制作 Zoom 1,5 时,它什么也没做,只有数字 1 或 2,但是当它达到它太大/小时,我如何放大和缩小而不迈出这么大的步子,我该如何让它少走些步子?
public float Zoom
{
get { return zoom; }
set { zoom = value; }
}
public Matrix get_transformation(GraphicsDeviceManager graphicsDevice)
{
transform =
Matrix.CreateTranslation(new Vector3(-pos.X, -pos.Y, 0)) *
Matrix.CreateRotationZ(rotation) *
Matrix.CreateScale(new Vector3(Zoom, Zoom, 0)) *
Matrix.CreateTranslation(new Vector3(graphicsDevice.GraphicsDevice.Viewport.Width * 0.0f, graphicsDevice.GraphicsDevice.Viewport.Height * 0.0f, 0));
return transform;
}
//zooming
float scrollValue = Mouse.GetState().ScrollWheelValue / 480;
Core.cam.Zoom = scrollValue;
基本上,每次我滚动它都会将缩放值增加 0.25,并且应该做一些事情,但它只会在 4 次滚动后做一些事情(4 * 0.25 = 1)
编辑:
通过更改修复它
float scrollValue = Mouse.GetState().ScrollWheelValue / 480;
至
float scrollValue = Mouse.GetState().ScrollWheelValue / 480f;