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

Project1

 找回密码
 注册会员
搜索

这种遮挡异常有解吗

查看数: 4720 | 评论数: 11 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2018-4-2 17:35

正文摘要:

远景水面用角色行走图,只要不是32*32的,任你图块如何调节,都遮挡不了后面的海浪,我就¥#%……%¥&Y^% 然后我说忍了,回头想别的辙 然后我想用个其他的透视,把椰子扔远景,用影子来表现夕阳的光照,结果影子遮挡 ...

回复

灯笼菜刀王 发表于 2018-4-3 13:14:36
本帖最后由 灯笼菜刀王 于 2018-4-3 13:20 编辑
89444640 发表于 2018-4-3 11:33
这脚本影子遮挡调了一下,很正常,角色的影子位于npc脚下,虽然跟现实还是有所区别不过能接受。
第一次 ...


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) 从操作上入手吧.

先开开关让全员生成影子,再改变角色行走图, 两个操作最好有时间差 ,比如切换地图前先开影子开关, 然后再到地图里自动执行其他操作.

评分

参与人数 1+1 收起 理由
89444640 + 1 感谢帮助~

查看全部评分

灯笼菜刀王 发表于 2018-4-3 10:11:15
本帖最后由 灯笼菜刀王 于 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)

看看哪个效果好.
89444640 发表于 2018-4-3 09:57:34
灯笼菜刀王 发表于 2018-4-2 21:53
要做真实影子的话,有三种方法

1, 直接画到行走图里,但是这样会导致行走图过长, 落脚点不和谐, 不过落脚 ...

https://rpg.blue/forum.php?mod=v ... hlight=%D3%B0%D7%D3
这个似乎可以实现,但是……因为我素材规格,遮挡异常度很高。
灯笼菜刀王 发表于 2018-4-2 21:53:49
本帖最后由 灯笼菜刀王 于 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
guoxiaomi 发表于 2018-4-2 20:36:59
这个脚本是我写的啦……但是这几天没空看……
defisym 发表于 2018-4-2 20:29:35

如果因为引擎限制实在处理不好,而这一段又不是主要剧情流程,花几百块找人画一张CG要轻松省力的多……
大约就是一个左手倒右手的问题,个人建议引擎本身的层只处理沙滩、角色和阴影(刚好对应三层)
海浪和树木之类的都做到远景图里面,然后几张循环切……
至于冒头的问题……反正判定只有一格子,在这里切行走图就行……(被打飞
拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

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

GMT+8, 2024-9-27 20:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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