设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 70|回复: 4
打印 上一主题 下一主题

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

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2840
在线时间
1071 小时
注册时间
2015-11-1
帖子
274
跳转到指定楼层
1
发表于 前天 21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
请问,如何获取一个事件以像素为单位的实时坐标呢?
(比如一格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
难道说这个方法有什么背后的原理我不明白?
还是说本身作为浮点数就已经是一个重运算,并不能节省计算量?

Lv3.寻梦者

梦石
0
星屑
2840
在线时间
1071 小时
注册时间
2015-11-1
帖子
274
2
 楼主| 发表于 昨天 13:31 | 只看该作者
我通过把event.real_x进行位计算之后,再使用floor处理成整数,然后使用这个值来进行碰撞的检测运算。
这是我的处理方案。

(event.real_x << 3).floor
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
42105
在线时间
5999 小时
注册时间
2006-11-10
帖子
7021
3
发表于 昨天 16:58 | 只看该作者
看不太懂你想要什么

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

那直接 event.screen_x   screen_y  screen_z 不就行了?
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2840
在线时间
1071 小时
注册时间
2015-11-1
帖子
274
4
 楼主| 发表于 昨天 20:38 | 只看该作者
灯笼菜刀王 发表于 2026-6-22 16:58
看不太懂你想要什么

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

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

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
42105
在线时间
5999 小时
注册时间
2006-11-10
帖子
7021
5
发表于 5 小时前 | 只看该作者
本帖最后由 灯笼菜刀王 于 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 (行走图脚下中心位置为原点)

回复 支持 反对

使用道具 举报

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

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2026-6-23 17:11

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表