2

我如何使用鼠标滚轮缩放,我试试这个

        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);
        }

但是即使我滚动一次,我也会继续放大,而且我对 XNA 有点陌生。请帮忙。

4

1 回答 1

7

ScrollWheelValue获取自游戏开始以来累积的鼠标滚轮值,因此每次获取时都需要将该值复制到变量中,以便在下一个周期进行比较。

此外,您不能设置ScrollWheelValue,并且此行是错误的:

currentMouseState.ScrollWheelValue.Equals(0);

我认为您的想法是将其值设置为 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;

它应该工作。

于 2013-08-19T20:02:06.850 回答