如果是第一人称游戏的话都会遇到这个问题,因为在游戏内移动画面时,游戏是以准心为鼠标来移动,并且准心一直在正中央,而系统的鼠标则是跟着在后台到处乱晃,比如枪战游戏,你要把画面往右边移动半世链屏,可能后台的系统鼠标已经移动了两屏了。
我的思路,先获取游戏窗口正中央的坐标,为窗口大小XY各除2,你所要移动到的坐标,你需要以游戏内准心为基准移动到那个坐标,而不是以后台系统鼠标为基准,所以用正中央点,也就是游戏准心位置,如果没有准心,则是游戏移动档好画面时的基准位置,也不一定就绝对是窗口正中央。
用游戏基准坐标,减去目标坐标,获得他的绝对值,=游戏基准坐标离目标坐标的距离,用游戏后台系统鼠标移动这个距离,则可以通过移动后台鼠标的代码方式,以游戏画面准心为基准,移动到目标系统坐标。
但是如果游戏准心移动行返铅速度跟后台系统鼠标移动速度不一样的话,这个距离值要按比例乘除。
比如游戏准心为基准,游戏画面移动100个像素,而实际后台鼠标移动了200个像素,则需要想办法测出这个差值倍数,多了就将距离值乘,少了除。
上面所说的换算方式,需要加上一些判断,比如目标坐标比基准坐标大时,则用目标坐标+距离,如果目标坐标比基准坐标小,则要用目标距离-距离,做一些判断即可。
不太明白,
1. 你每次都让按键精旦桐灵将游戏窗口移到一个固定的位置,这漏迟漏样你就不用去转屏幕坐标返烂了 .
Hwnd = Plugin.Window.Foreground()
Call Plugin.Window.Move(Hwnd, 100, 100)
2. 也可直按用后台方式,在游戏窗口里直接点击就行了
现在玩玩《问~道》这样的回合游戏,觉得还不错呢