本帖最后由 灯笼菜刀王 于 2018-4-3 13:20 编辑 89444640 发表于 2018-4-3 11:33 def set_shadow @shadow.visible = (! @character.transparent) return unless @shadow.visible ax = @character.pattern * @aw ay = @shadow_direction[(@character.direction - 2) / 2] * @ah @shadow.src_rect.set(ax, ay, @aw, @ah) @shadow.x = @character.screen_x + @add_x @shadow.y = @character.screen_y + @add_y +10 @shadow.z = @character.screen_z + (@flay ? 9999 : 0) @shadow.opacity = @character.opacity * X☆R::Shadow_Opacity / 255 @shadow.blend_type = @character.blend_type end 影子位置这里调整就可以了 至于NPC不显示影子, 应该是你自动执行引起的, 原因: def update_shadow if @data_show != $game_switches[X☆R::Control_Sv_Id] @data_show = $game_switches[X☆R::Control_Sv_Id] @shadow.visible = @data_show ? have_shadow? : false end return unless @data_show #开关没开的时候到这里就切断了 set_data if need_refresh make_shadow if @character_name != @character.character_name #而后面打开开关的时候, 只有改变了行走图的主角才会生成影子 =.= @shadow.update if @shadow.bitmap set_shadow if @shadow.bitmap end 解决方法, 不想随便改动前辈的脚本(其实是我没有更好的方法XD) 从操作上入手吧. 先开开关让全员生成影子,再改变角色行走图, 两个操作最好有时间差 ,比如切换地图前先开影子开关, 然后再到地图里自动执行其他操作. |
本帖最后由 灯笼菜刀王 于 2018-4-3 10:21 编辑 把你要当影子的事件铺到合适的位置, 让它最顶端处于角色脚下, 行走图换成头下脚上的影子 然后改变行走速度和角色相同, 勾上移动动画,穿透,最前面显示, 并行处理 事件页设置 if 角色面向 下 if 下 被 按下时 移动路线: 本事件 下移动 end end if 角色面向 左 if 左 被 按下时 ..... 就这样咯, 但是这样也许会有些小问题.... 比如角色被前面某个东西挡住了,无法移动, 但是如果玩家依然按着方向的话 =v=....... 要避免就用个"$game_player.moving?" 把上面那些都套起来,应该就可以避免了 或者这样写 x = $game_player.x y = $game_player.y $game_map.events[编号].moveto(x,y) 看看哪个效果好. |
灯笼菜刀王 发表于 2018-4-2 21:53 https://rpg.blue/forum.php?mod=v ... hlight=%D3%B0%D7%D3 这个似乎可以实现,但是……因为我素材规格,遮挡异常度很高。 |
本帖最后由 灯笼菜刀王 于 2018-4-2 21:55 编辑 89444640 发表于 2018-4-2 21:00 要做真实影子的话,有三种方法 1, 直接画到行走图里,但是这样会导致行走图过长, 落脚点不和谐, 不过落脚点可以通过修改脚本坐标调整, 两种方法 ①,修改Sprite_Character 45-50行左右, 修改self.oy = @ch 改为 self.oy = @ch / 2 这样落脚点就是角色和影子的中间了, 适合影子比例规则的情况 ②,修改Game_Character 1 245-255行左右, y = (@real_y - $game_map.display_y + 3) / 4 + 32 根据你的影子长度调整后面的数字, 适合影子比例不规则的情况, 不过改这个会连元件的坐标一起改, 所以要加上个判断 if @tile_id == 0 #不是元件调整坐标 y = (@real_y - $game_map.display_y + 3) / 4 - 22 else #元件就保持原样 y = (@real_y - $game_map.display_y + 3) / 4 + 32 end 当然, 也可以给它加上个开关, 当XX开关打开的时候, 就用修改的坐标, 关闭的时候就保留原样, 避免其他地图也拖长影....... 这个做法有个缺点, 所有NPC你都要给他拉影子.......不过要真实的话,也是所有人都要就是了, 但是茂盛度和遮挡优先度异常就不可避免了=v= 第二个方法 黑影单独做个行走图, 然后和角色同步行动, 同步可以用并列运行控制或者直接 在Game_Player里, 角色上下左右移动的时候 后面加上 $game_map.events[编号].direction $game_map.events[编号].x += 1 $game_map.events[编号].y += 1 这样的做法是绿色无污染,且可以不用给NPC加影子~ 缺点是, 黑影"走"到最下面一行就不能继续往下了=3=.....如果角色继续走的话..... 第三个方法 是方法二·改. 行走图改为显示图片, 完美回避 方法1和方法2的问题, 缺点比较麻烦, 调坐标调死人.jpg |
如果因为引擎限制实在处理不好,而这一段又不是主要剧情流程,花几百块找人画一张CG要轻松省力的多…… 大约就是一个左手倒右手的问题,个人建议引擎本身的层只处理沙滩、角色和阴影(刚好对应三层) 海浪和树木之类的都做到远景图里面,然后几张循环切…… 至于冒头的问题……反正判定只有一格子,在这里切行走图就行……(被打飞 |
站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作
GMT+8, 2024-11-24 10:23
Powered by Discuz! X3.1
© 2001-2013 Comsenz Inc.