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

Project1

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

[已经过期] 请问如何理解“自连接”

[复制链接]

Lv3.寻梦者

梦石
0
星屑
3920
在线时间
254 小时
注册时间
2013-10-13
帖子
790
跳转到指定楼层
1
发表于 2021-2-13 16:46:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x




  #--------------------------------------------------------------------------
  # ● 以画面中央为基准设置地图的显示位置
  #--------------------------------------------------------------------------
  def center(x, y)
    max_x = ($game_map.width - 20) * 32
    max_y = ($game_map.height - 15) * 32
    $game_map.display_x = [0, [x * 32 - CENTER_X, max_x].min].max
    $game_map.display_y = [0, [y * 32 - CENTER_Y, max_y].min].max
  end

请问,这个程序怎么理解?y=448时;当max_y=160,y*32 - CENTER_Y = 208,值取160;当
当max_y=320,y*32 - CENTER_Y = 208,值取208。

Lv5.捕梦者

梦石
0
星屑
24247
在线时间
5036 小时
注册时间
2016-3-8
帖子
1618
2
发表于 2021-2-13 18:33:24 | 只看该作者
本帖最后由 alexncf125 于 2021-2-13 18:43 编辑

“自连接”?? 什么东西??

我只知道:
min - 最小值
max - 最大值

当max_y=160,y*32 - CENTER_Y = 208,值取160
                                                                             ^
[0, [208, 160].最小值=160].最大值=160_______」


当max_y=320,y*32 - CENTER_Y = 208,值取208
                                                                             ^
[0, [208, 320].最小值=208].最大值=208_______」


总括而言...
[0, [a, b].min].max这句的形式指:
当a与b均大于0时,
会返回a与b中, 最小的那个

即:
a = 1, b = 2, 返回1
a = 4, b = 3, 返回3
a = 5, b = 5, 返回5
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2270
在线时间
125 小时
注册时间
2015-8-14
帖子
22
3
发表于 2021-2-13 19:50:16 | 只看该作者
本帖最后由 Hello``Bubble 于 2021-2-13 19:51 编辑

是要问地图卷动/卷屏机制/坐标显示原理
精灵ox,oy属性就是做卷动的
Spriteset_Map中有定义@tilemap.ox/@tilemap.oy=$game_map.display_x/4  /  $game_map.display_y/4
比如鼠标脚本中如何获取鼠标当前选择的地图坐标:
x,y=Mouse.get_mouse
x/=32;y/=32
return x+$game_map.display_x/128,y+$game_map.display_y/128
第一步除以32很好理解,比如鼠标在320,320的位置,选中的位置是当前画面下的“中间”第10*10这个格子
但是由于卷屏的关系仅仅这样算是肯定不行的。$game_map.display_x/$game_map.display_y就代表了移动的(格子数*4)这么多像素
比如从最左端开始画面往右边移动了一个格子那么$game_map.display_x=32*4
$game_map.display_x/128就是算出了当前滚动了几个格子在X方向上

点评

对,就问地图坐标显示原理,我理解不了!  发表于 2021-2-13 20:31

评分

参与人数 1星屑 +20 收起 理由
RyanBern + 20 我很赞同

查看全部评分

回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3920
在线时间
254 小时
注册时间
2013-10-13
帖子
790
4
 楼主| 发表于 2021-2-13 20:32:58 | 只看该作者
对,就问地图坐标显示原理,我理解不了!  
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
3920
在线时间
254 小时
注册时间
2013-10-13
帖子
790
5
 楼主| 发表于 2021-2-16 15:29:07 | 只看该作者
能讲解关于 地图卷动 坐标变化 的 知识吗?
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
14043
在线时间
2069 小时
注册时间
2016-9-20
帖子
844
6
发表于 2021-2-16 19:17:21 | 只看该作者
本帖最后由 ppspssss 于 2021-2-16 20:36 编辑
Hello``Bubble 发表于 2021-2-13 19:50
是要问地图卷动/卷屏机制/坐标显示原理吧
精灵ox,oy属性就是做卷动的
Spriteset_Map中有定义@tilemap.ox/@t ...


这个我想过研究一个类似放置的游戏类,比如放置家具, 塔防遊戏  所以研究过 看來Hello``Bubble也有一些研究,感覺你熱心回答

这个楼主想要知道这个原理, 我就觉得不应该去理解这些难以理解的,要完全了解RM内置的移动方式才行, 除非像我又或者Hello``Bubble 他研究比如塔防游戏才用到吧?
-----------------------------

如果地图没移动过, 还是对的, 可是當角色地图走动地图一格后,鼠标个获取的格子始终向后偏移了半格, 為什么呢

看在   Game_Player里的CENTER_X
####
CENTER_X = (320 - 16) * 4   # 画面中央的 X 坐标 * 4
CENTER_Y = (240 - 16) * 4   # 画面中央的 Y 坐标 * 4
####
可以看出是減了半格(是32的一半), Y軸实際没有影响, 因此要X軸加条件一下
$mx,$my=Mouse.get_mouse

if $game_map.display_x >= 64 #16*128得出来64(半格)
  mx = $mx+16
end
$map_mx = $game_map.display_x / 128 +  mx / 32
$map_my = $game_map.display_y / 128 + $my / 32

然后人物移动多过地图也能正确不偏半格了
-----------------

另外 , 一格像素是32不是128 , 那为什么要乘4变成128呢呢, 我猜測(如错误请纠正我) : 这样可令人物事件移动速度的计算速度下限调低, 这样的话就不用额外寫计数器比较麻烦, 因为一帧固定加1, 除4令下限变低,使得移动所需的計数增加至4倍, 令主角及事件可以更慢的速度移动, 那么结论:实际计算是移动了128个单位, 实际显示則除4得出32个单位

点评

塔防游戏感觉不需要很多知识。只需要能在地图/画面上准确的位置生成精灵。剩下的都是“并行处理”判断坐标了....  发表于 2021-2-16 20:50
那你好像是想做一个塔防游戏? 虽然你贴子示范视频删了, 但我删之前看了, 好像是单塔对多怪的原理  发表于 2021-2-16 20:38
我也是随便玩玩罢了很业余。并不能理解RGSS预设的移动方式,只是能做一些最常见的功能,知道大概怎么改/在哪里找而已...偏半格原来是这样...厉害!  发表于 2021-2-16 20:28
内容仅供参考,
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-4-19 18:38

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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