如何使用鼠标滚轮进行缩放,我试试这个
if (currentMouseState.ScrollWheelValue < originalMouseState.ScrollWheelValue)
{
cameraPosition += new Vector3(0, -1, 0);
UpdateViewMatrix();
currentMouseState.ScrollWheelValue.Equals(0);
}
if (currentMouseState.ScrollWheelValue > originalMouseState.ScrollWheelValue)
{
cameraPosition += new Vector3(0, 1, 0);
UpdateViewMatrix();
currentMouseState.ScrollWheelValue.Equals(0);
}
Run Code Online (Sandbox Code Playgroud)
但即使我滚动一次,我仍然继续放大,我对XNA有点新意.请帮忙.
ScrollWheelValue 从游戏开始以来获取累积鼠标滚轮值,因此每次获得它时,您需要将该值复制到变量中,以便在下一个循环中进行比较.
而且,你不能设置ScrollWheelValue,这一行是错误的:
currentMouseState.ScrollWheelValue.Equals(0);
Run Code Online (Sandbox Code Playgroud)
我认为你的想法是将其值设置为0,但该指令将其值与0进行比较并给出一个布尔值.
编辑:
你应该做这样的事情:
声明一个全局变量
private int previousScrollValue;
并在Initialize方法中设置为:
previousScrollValue = originalMouseState.ScrollWheelValue;
然后编辑您的代码:
if (currentMouseState.ScrollWheelValue < previousScrollValue)
{
cameraPosition += new Vector3(0, -1, 0);
UpdateViewMatrix();
}
else if (currentMouseState.ScrollWheelValue > previousScrollValue)
{
cameraPosition += new Vector3(0, 1, 0);
UpdateViewMatrix();
}
previousScrollValue = currentMouseState.ScrollWheelValue;
Run Code Online (Sandbox Code Playgroud)
它应该工作.