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