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

Project1

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

[已经解决] 如何判定某處是遮蔽的?(就是地圖元件打五角星的地方)

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2008-2-3
帖子
175
跳转到指定楼层
1
发表于 2011-11-6 19:57:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
RT,想設置主角躲在牆壁后或者樹蔭下就可以避開敵人的視線。但是不知道如何判定啊。判定是否可通行的代碼是$game_player.passable?(x,y),那麼有沒有判定該處是否是遮蔽的代碼呢?

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
2
发表于 2011-11-6 20:02:00 | 只看该作者
本帖最后由 MSQ 于 2011-11-6 20:04 编辑

貌似有点难~~事件可以吗?

1,可以用公共事件来做,当进入某地图时自动打开,用条件分歧判断,当主角与该坐标重合时,可以用开关,变量等控制敌人的事件。
2,普通事件,铺上透明事件,当该事件与主角接触时,判断。从而做到如上的效果。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2008-2-3
帖子
175
3
 楼主| 发表于 2011-11-6 20:14:56 | 只看该作者
MSQ 发表于 2011-11-6 20:02
貌似有点难~~事件可以吗?

1,可以用公共事件来做,当进入某地图时自动打开,用条件分歧判断,当主角与该 ...

這樣做是可以啦,只是略麻煩了點。如果有一句代碼的話,那麼就會方便很多呢……
⊙﹏⊙
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
354
在线时间
1036 小时
注册时间
2011-5-19
帖子
2098
4
发表于 2011-11-6 20:19:44 | 只看该作者
machinemxy 发表于 2011-11-6 20:14
這樣做是可以啦,只是略麻煩了點。如果有一句代碼的話,那麼就會方便很多呢…… ...

嗯~~本人只是一个新人~~只明白一些简单的事件~~脚本只会改坐标~~~囧

不过VX区强人很多,多能一会儿吧~~

VX区的强人来6R的时间都很诡异~~=W=(大雾)

点评

MSQ
PS:龙骑士说明不了神马~~我很水的~~  发表于 2011-11-6 21:11
MSQ
我真的是新人~~神马都不会~~QAQ  发表于 2011-11-6 21:11
bbh
你说你是新人……没人信吧。(都龙骑士了)  发表于 2011-11-6 21:08
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2008-2-3
帖子
175
5
 楼主| 发表于 2011-11-6 21:08:34 | 只看该作者
MSQ 发表于 2011-11-6 20:19
嗯~~本人只是一个新人~~只明白一些简单的事件~~脚本只会改坐标~~~囧

不过VX区强人很多,多能一会儿吧~~

誒,我也是新人呢~以前都純事件的,現在剛開始研究編腳本。
⊙﹏⊙
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

6
发表于 2011-11-7 00:20:03 | 只看该作者
本帖最后由 DeathKing 于 2011-11-7 14:05 编辑

参见VX指导手册:RPG Maker VX -> 地图 -> 通行设定
在B~E组的元件中会有另外一个星号标记 ☆ ,代表该元件的优先级在主角之上。


写代码很快,但是发现了一个BUG:VX的地图绘制是互斥的,B层绘制后再绘制C层,则C层会覆盖B层,因此,不可能检查A、B、C层的通行设定。考虑到楼主的需求,给出的代码只检查了B层的对应区域是否为 [☆] 。楼住可以参考Game_Map#passable?方法来修改此方法。

使用方法:$game_map.mask?(x,y) 检查当前地图x,y坐标处的B层图块是否设置为[☆]。
  1. class Game_Map
  2.   #--------------------------------------------------------------------------
  3.   # ● 判断是否为五角星
  4.   #     x    : X 坐标
  5.   #     y    : Y 坐标
  6.   #--------------------------------------------------------------------------
  7.   def mask?(x, y)
  8.     # 考虑到只检查主角是否躲在树下,因此只检查B层
  9.     tile_id = @map.data[x, y, 1]          # 获取元件 ID
  10.     return false if tile_id == nil        # 获取元件 ID 失败 : 不可以通行
  11.     pass = @passages[tile_id]             # 获取通行属性
  12.     return true if pass & 0x10 == 0x10    # [☆] : 不受通行影响
  13.     return false                          # 不可以通行
  14.   end
  15. end
复制代码

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2008-2-3
帖子
175
7
 楼主| 发表于 2011-11-7 16:34:05 | 只看该作者
DeathKing 发表于 2011-11-7 00:20
参见VX指导手册:RPG Maker VX -> 地图 -> 通行设定

這個……我使用了,感覺沒用啊。然後測試了一下,好像無論如何,他的值都是TRUE。請問會是哪裡出問題了么?

点评

等我晚上回家再确认一下。  发表于 2011-11-7 17:49
⊙﹏⊙
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

8
发表于 2011-11-7 23:01:32 | 只看该作者
machinemxy 发表于 2011-11-7 16:34
這個……我使用了,感覺沒用啊。然後測試了一下,好像無論如何,他的值都是TRUE。請問會是哪裡出問題了么 ...

经过测试,脚本是没有问题的。

如果在你的工程里不适用,请检查一下B层图块的通行度设定(图以B层的某树为例)


树端(x=10,y=4)为☆,树根(x=11,y=5)为×


坐标可以在工具的状态栏的右边部分获得,而不是所谓的“实际X坐标”和“实际Y坐标”


注意,这个脚本只会检查对应X,Y地区的B图层的图块通行度设定!

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
80 小时
注册时间
2008-2-3
帖子
175
9
 楼主| 发表于 2011-11-8 11:03:41 | 只看该作者
DeathKing 发表于 2011-11-7 23:01
经过测试,脚本是没有问题的。

如果在你的工程里不适用,请检查一下B层图块的通行度设定(图以B层的某树 ...

……嗯,謝謝你的熱心解答,我回去再測試看看
⊙﹏⊙
回复

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
1050
在线时间
1564 小时
注册时间
2008-7-30
帖子
4418

贵宾

10
发表于 2011-11-8 13:35:48 | 只看该作者
machinemxy 发表于 2011-11-8 11:03
……嗯,謝謝你的熱心解答,我回去再測試看看

不,其实你没有错。VX还有一个默认机能,是用B图层的第一个图块(就是打星号那个)填充整个B图层,因此如果不是特殊设置指定区域为X,都可以通行。

因此,如果想要实现你的想法就会变得十分困难。

See FScript Here:https://github.com/DeathKing/fscript
潜心编写URG3中。
所有对URG3的疑问和勘误或者建议,请移步至发布页面。
欢迎萌妹纸催更
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-5 15:25

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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