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

Project1

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

[已经解决] 【制作真的门】门遮挡 门正确遮挡 门通行

[复制链接]

Lv4.逐梦者

梦石
0
星屑
12390
在线时间
1000 小时
注册时间
2019-11-5
帖子
2450

极短25参与极短24参与

跳转到指定楼层
1
发表于 2021-12-26 21:06:44 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

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

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

x
本帖最后由 哇哇哇啊叭叭 于 2021-12-27 07:15 编辑

  这里贴一下我的解决办法。
  经测试发现,我实际要实现的功能,跟【如果玩家位置上事件名含“door”  则仅禁止向下通行】这个表述并不相符 。准确表述应是:【当门关闭时:人无法通过,且人在门后则被挡住、人在门前则挡住门】
1. 黏贴下列代码
2. 在事件页中写上备注<door = !Door2>
3. 将关好的门设置为一个在人物下方、仅禁止向下移动的图块
4. 像往常一样设置门扉

  这样就完成了一个真实的门扉!!为什么 不使用“修改行走图”那句代码呢?因为,一旦使用了它,图块的通行信息也将被修改,这样就与“直接使用门扉造型”并无二至了。写完之后,觉得代码很长,操作也比较麻烦。今后如果能读到更好的知识,再给它减肥吧...

  感谢2楼、3楼的大佬回答!!
  分别解决了功能问题、解释了代码原理。



  [check_passage(x, y, (1 << (d / 2 - 1)) & 0x0f)]是什么意思?
  如题。获取这个问题,主要是为了实现【如果玩家位置上事件名含“door”  则仅禁止向下通行】的功能,如果有大神能直接通过代码实现这个功能,咱也可以不问这个问题啦


目前知道:
【1 << (d / 2 - 1)】代表二进制1向左移动0或1或2或3位,对应得出得出十进制1、2、4、8,二进制0001、0010、0100、1000
【0x0f】是15
【 (1 << (d / 2 - 1)) & 0x0f】计算后分别得1、2、4、8

那么将上面的值 &0x0f 运算是什么意思呢?

风继续吹,不忍远离。年少轻狂,眼神明亮,最好的年纪,最好的时光。希望岁月是一场春梦

Lv3.寻梦者

梦石
0
星屑
2866
在线时间
446 小时
注册时间
2016-9-26
帖子
1223
4
发表于 2021-12-27 12:54:47 | 只看该作者
话说npc也无法通过吗

点评

npc是无效的,它们只会挡住门  发表于 2021-12-27 13:50
汗  发表于 2021-12-27 13:49
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1830
在线时间
314 小时
注册时间
2021-11-7
帖子
165
3
发表于 2021-12-27 00:24:59 | 只看该作者
本帖最后由 夏虫沉默 于 2021-12-27 00:40 编辑

&这个符号应该是与运算,f的二进制是1111,0001:0010:0100:1000和1111的与运算是其本身,只有两边都是1与运算才是1,例如1010和0111的与运算就是0010,也就是十进制的2。这个d不知道是不是direction,2,4,6,8,运算结果分别为1,2,4,8。

点评

3Q!~  发表于 2021-12-27 11:44

评分

参与人数 1星屑 +30 收起 理由
alexncf125 + 30 塞糖

查看全部评分

欲速春风山劝阻,不得恰恰不得呼。
回复 支持 1 反对 0

使用道具 举报

Lv5.捕梦者

梦石
10
星屑
39597
在线时间
1920 小时
注册时间
2010-11-14
帖子
3320

R考场第七期纪念奖

2
发表于 2021-12-27 00:24:39 | 只看该作者
实现【如果玩家位置上事件名含“door”  则仅禁止向下通行】的功能

RUBY 代码复制
  1. class Game_Event
  2.   attr_reader :event
  3. end
  4.  
  5. class Game_Player
  6.   alias cld99_aliased_passable? passable?
  7.   def passable?(x, y, d)
  8.     has_door = $game_map.events_xy(x, y).find { |e| e.event.name.include?('door') }
  9.     return false if d == 2 && has_door
  10.     cld99_aliased_passable?(x, y, d)
  11.   end
  12. end

点评

谢谢大佬!回头下班测试测试~  发表于 2021-12-27 10:59

评分

参与人数 1星屑 +100 收起 理由
alexncf125 + 100 版主认可的优秀回答

查看全部评分

用头画头像,用脚写脚本
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-12-13 01:57

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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