Project1

标题: 阴影怎么做的 [打印本页]

作者: yxjsd    时间: 2008-4-26 00:43
标题: 阴影怎么做的
我是菜鸟,请问地板上墙的阴影是怎么做出来的???
作者: 火鸡三毛老大    时间: 2008-4-26 01:26
画房子就会有...
默认影子是出现在房子的右边 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: 越前リョーマ    时间: 2008-4-26 01:28
会自动生成。 [LINE]1,#dddddd[/LINE]系统信息:本贴获得楼主认可,66RPG感谢您的热情解答~
作者: yxjsd    时间: 2008-4-26 01:40
谢谢
作者: 雪流星    时间: 2008-4-26 03:54
问题解决请认可
作者: Fantasy幻想    时间: 2008-4-26 06:16
在素材B中间那一块也有。这些用于不会自动生成阴影的房子。
作者: 八云紫    时间: 2008-4-26 06:18
貌似还可以把阴影去掉哦
作者: 雪流星    时间: 2008-4-26 08:09
以下引用八云紫于2008-4-25 22:18:31的发言:
貌似还可以把阴影去掉哦


没错,只要在事件中把地图的第三层图块删掉即可
只不过编辑器上不会显示

作者: cheyenne    时间: 2008-4-26 10:04
请问雪流星大…在事件中把第三层图块删去是什么意思…
作者: 雪流星    时间: 2008-4-26 15:38
我说错了,其实是第二层
地图绘制时,
有A图块的第一层和
B~E图块的第三层
还有一层就是自动阴影的第二层
事实上第二层绘制的是A图块的部分自动元件,
如下图:


从Game_Map的这段代码可以得知地图有三层
  1.     for i in [2, 1, 0]                      # 由上層而下
  2.       tile_id = @map.data[x, y, i]          # 獲取圖塊 ID
  3.       return false if tile_id == nil        # 無法獲取圖塊:不可通行
  4.       pass = @passages[tile_id]             # 獲取通行屬性
  5.       next if pass & 0x10 == 0x10           # ☆: 不影響通行判定
  6.       return true if pass & flag == 0x00    # o: 可以通行
  7.       return false if pass & flag == flag   # x: 不可通行
  8.     end
复制代码

贴一段代码
在地图上按下L键可以察看角色所在地图图块
  1. class Scene_Map
  2.   alias passage_update update
  3.   def update
  4.     passage_update
  5.     if Input.trigger?(Input::L)
  6.       map_tile_id_0 = ($game_map.map.data[$game_player.x, $game_player.y, 0]-2000) / 48
  7.       map_tile_id_1 = ($game_map.map.data[$game_player.x, $game_player.y, 1]-2000) / 48
  8.       map_tile_id_2 = ($game_map.map.data[$game_player.x, $game_player.y, 2]+1)
  9.       
  10.       map_tile_id_0 = 0 if map_tile_id_0 == -42
  11.       map_tile_id_1 = 0 if map_tile_id_1 == -42
  12.       map_tile_id_2 = 0 if map_tile_id_2 == -42

  13.       map_tile_ids = "0: #{map_tile_id_0.to_s}   " +
  14.                      "1: #{map_tile_id_1.to_s}   " +
  15.                      "2: #{map_tile_id_2.to_s}"
  16.       p map_tile_ids
  17.     end
  18.   end
  19. end

  20. class Game_Map
  21. def map
  22.    return @map
  23. end
  24. end
复制代码


还有一段国外脚本
可以把自动阴影清除
放在事件里使用
不过建议开新工程来试
  1. for x in 0...$game_map.data.xsize
  2.   for y in 0...$game_map.data.ysize
  3.     #oberes belegt?
  4.     if $game_map.data[x,y,2] == 0
  5.       $game_map.data[x,y,2] = $game_map.data[x,y,1]
  6.       $game_map.data[x,y,1] = $game_map.data[x,y,0]
  7.       $game_map.data[x,y,0] = 0
  8.     end
  9.   end
  10. end
复制代码

作者: 雪流星    时间: 2008-4-26 17:50
http://rpg.blue/viewthread.php?tid=84498
这个贴子里的所谓第二层,我在研究素材的时候也研究到了……不过真还不如直接找人问脚本来的快

我的问题如下:
桌子自动元件的算法在脚本当中有吗?因为桌脚部分的生成和其余的自动元件似乎存在差异。
另外,那个帖子当中的脚本是清除全部自动阴影么?如果需要清除特定自动阴影用脚本可否办到?
另外,自动生成的阴影究竟是调用的某些图块,亦或是别的方式生成的?

因为不懂脚本,只能从地图本身研究,并且得出结论自己也不确定,上面三个问题如果可以解答的话感激不尽。无论如何先谢过雪流星大了。


我想自动阴影应该不是调用图块,而是另外用某种方法生成的
桌脚亦如是,不过我今天还有事,还要把城市大赛的地图全部评一遍(也包括你的喔)
晚一点研究了在贴上来吧 [LINE]1,#dddddd[/LINE]版主对此帖的评论:『连帖,小扣自己5分』,积分『-5』。这些被扣积分的一半会用于对本帖正确答案的悬赏。




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1