查看: 605|回复: 4

[有事请教] 如何获取事件在世界坐标上的像素坐标呢?

[复制链接]
梦石
0
星屑
2870
在线时间
1074 小时
注册时间
2015-11-1
回帖
261
发表于 2026-6-21 21:52:45 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
请问,如何获取一个事件以像素为单位的实时坐标呢?
(比如一格32像素,获取的是以这个像素为参考的单位。)

我需要运行一些实时的碰撞检测。
目前,是用event.real_x方法,但获取的是当前以格子为参照的坐标。
但这是一个浮点数,计算量十分大。
我希望换成整数的数据。

请问,RMVA有没有直接获取一个事件以像素为单位的实时坐标的方法呢?

---------分割线---------
另外就是我另一个思路是用round(1)这方法对event.real_x进行处理之后,再进行碰撞检测,以节约计算量。
但是出来的结果却是:
类似:
-1.5999999999999996
-1.5999999999999996
-1.5999999999999996
-1.5999999999999996
-1.5999999999999996
-1.5999999999999996
-1.5999999999999996
-1.5
-1.5
-1.5
-1.5
难道说这个方法有什么背后的原理我不明白?
还是说本身作为浮点数就已经是一个重运算,并不能节省计算量?
梦石
0
星屑
2870
在线时间
1074 小时
注册时间
2015-11-1
回帖
261
 楼主| 发表于 2026-6-22 13:31:57 | 显示全部楼层
我通过把event.real_x进行位计算之后,再使用floor处理成整数,然后使用这个值来进行碰撞的检测运算。
这是我的处理方案。

(event.real_x << 3).floor
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2026-6-22 16:58:56 | 显示全部楼层
看不太懂你想要什么

如果是 "获取一个事件以像素为单位的实时坐标"

那直接 event.screen_x   screen_y  screen_z 不就行了?
回复

使用道具 举报

梦石
0
星屑
2870
在线时间
1074 小时
注册时间
2015-11-1
回帖
261
 楼主| 发表于 2026-6-22 20:38:06 | 显示全部楼层
灯笼菜刀王 发表于 2026-6-22 16:58
看不太懂你想要什么

如果是 "获取一个事件以像素为单位的实时坐标"

原来如此,谢谢。其实我的本意是看能不能获取到一个不需要太精确的实时坐标,用来做碰撞检测,现在我发现坐标都好像是realx转化过来的浮点数?,那就好像用哪个数据做检测都一样了。
回复

使用道具 举报

梦石
0
星屑
42235
在线时间
6017 小时
注册时间
2006-11-10
回帖
6966
发表于 2026-6-23 11:42:33 | 显示全部楼层
本帖最后由 灯笼菜刀王 于 2026-6-23 11:48 编辑
 眠  发表于 2026-6-22 20:38
原来如此,谢谢。其实我的本意是看能不能获取到一个不需要太精确的实时坐标,用来做碰撞检测,现在我发现 ...


"不太精确的实时坐标", 那就是 (event.real_x * 32).round  (原点为32*32的左上角)

事件的移动是先改变X,Y, 然后再把real_x y 逐帧加上移动距离(浮点) 直到和 X ,Y相等

而 screen_x y 是把 X,Y的"格", 转变为"当前显示的屏幕范围内的像素点坐标", 这个的坐标是以屏幕显示的部分为基准,
如果你想要的是整张地图的精确像素坐标, 那就是  (event.real_x * 32).round + 16  , (event.real_y * 32).round + 32 + event.shift_y (行走图脚下中心位置为原点)

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部