幻想森林

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: 88510051as

[RMXP] 如何让人物的行走图带有影子

[复制链接]

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2010-6-29 19:01:42 | 显示全部楼层
你这个影子是倒立的。。。他的是正立的。。。我先吃饭,等会试试。。。默认脚本似乎没有这个功能,我要看看。。。我做的算法可能会很慢啊。。。等会再说吧
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

10

主题

85

帖子

258

积分

③业余

脚本万年废柴

积分
258
QQ
发表于 2010-6-29 19:49:57 | 显示全部楼层
虽然这种算法我不会做,但是要说一下,你的示意图有一些显而易见的错误……影子叠了……反而跑到行走图上面去了……
版大说的影子方向是因为光源的问题了……如果版大还能研制出动态的影子那就…………神了……
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2010-6-29 19:54:17 | 显示全部楼层
这个东西我放弃了。。。我突然想起来 你是八方向的。。。无法兼容,此其一。。其二脚本速度比较慢,倒不是掉帧的问题,只是初始化的时间长

我1.66GHZ双核  256MB内存。。。集成显卡 一个 128X196的行走图 是 0.125秒。所以我做了一半就不做了。。。可以给你看看脚本
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2010-6-29 19:54:24 | 显示全部楼层
覆盖同名脚本
  1. #==============================================================================
  2. # ■ Sprite_Character
  3. #------------------------------------------------------------------------------
  4. #  角色显示用脚本。监视 Game_Character 类的实例、
  5. # 自动变化脚本状态。
  6. #==============================================================================
  7. class Sprite_Character < RPG::Sprite
  8.   #--------------------------------------------------------------------------
  9.   # ● 定义实例变量
  10.   #--------------------------------------------------------------------------
  11.   attr_accessor :character                # 角色
  12.   #--------------------------------------------------------------------------
  13.   # ● 初始化对像
  14.   #     viewport  : 查看端口
  15.   #     character : 角色 (Game_Character)
  16.   #--------------------------------------------------------------------------
  17.   def initialize(viewport, character = nil)
  18.     super(viewport)
  19.     @character = character
  20.     update
  21.     @shadow = Sprite.new
  22.     if @character.character_name != ""
  23.       w = self.bitmap.width
  24.       h = self.bitmap.height
  25.       @shadow.bitmap = Bitmap.new(w,h)
  26.       c = Color.new(0,0,0,160)
  27.       for i in 0...w
  28.         for j in 0...h
  29.           if self.bitmap.get_pixel(i,j).alpha!=0
  30.             @shadow.bitmap.set_pixel(i, h-1-j, c)
  31.           end
  32.         end
  33.       end
  34.     end
  35.     @shadow.ox = self.ox
  36.     @shadow.z = self.z
  37.   end
  38.   #--------------------------------------------------------------------------
  39.   # ● 更新画面
  40.   #--------------------------------------------------------------------------
  41.   def update
  42.     super
  43.     # 元件 ID、文件名、色相与现在的情况存在差异的情况下
  44.     if @tile_id != @character.tile_id or
  45.        @character_name != @character.character_name or
  46.        @character_hue != @character.character_hue
  47.       # 记忆元件 ID 与文件名、色相
  48.       @tile_id = @character.tile_id
  49.       @character_name = @character.character_name
  50.       @character_hue = @character.character_hue
  51.       # 元件 ID 为有效值的情况下
  52.       if @tile_id >= 384
  53.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  54.           @tile_id, @character.character_hue)
  55.         self.src_rect.set(0, 0, 32, 32)
  56.         self.ox = 16
  57.         self.oy = 32
  58.       # 元件 ID 为无效值的情况下
  59.       else
  60.         self.bitmap = RPG::Cache.character(@character.character_name,
  61.           @character.character_hue)
  62.         @cw = bitmap.width / 4
  63.         @ch = bitmap.height / 4
  64.         self.ox = @cw / 2
  65.         self.oy = @ch
  66.       end
  67.     end
  68.     # 设置可视状态
  69.     self.visible = (not @character.transparent)
  70.     # 图形是角色的情况下
  71.     # 设置脚本的坐标
  72.     self.x = @character.screen_x
  73.     self.y = @character.screen_y
  74.     self.z = @character.screen_z(@ch)
  75.     # 设置不透明度、合成方式、茂密
  76.     self.opacity = @character.opacity
  77.     self.blend_type = @character.blend_type
  78.     self.bush_depth = @character.bush_depth
  79.     if @tile_id == 0
  80.       # 设置传送目标的矩形
  81.       sx = @character.pattern * @cw
  82.       sy = (@character.direction - 2) / 2 * @ch
  83.       self.src_rect.set(sx, sy, @cw, @ch)
  84.       if @shadow
  85.         sx = @character.pattern * @cw
  86.         sy = (8 - @character.direction) / 2 * @ch
  87.         @shadow.src_rect.set(sx, sy, @cw, @ch)
  88.         @shadow.x = self.x
  89.         @shadow.ox = self.ox
  90.         @shadow.y = self.y
  91.         @shadow.z = self.z
  92.         @shadow.opacity = self.opacity
  93.         @shadow.blend_type = self.blend_type
  94.         @shadow.bush_depth = self.bush_depth
  95.       end
  96.     end
  97.     # 动画
  98.     if @character.animation_id != 0
  99.       animation = $data_animations[@character.animation_id]
  100.       animation(animation, true)
  101.       @character.animation_id = 0
  102.     end
  103.   end
  104. end
复制代码
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

10

主题

85

帖子

258

积分

③业余

脚本万年废柴

积分
258
QQ
发表于 2010-6-29 20:05:22 | 显示全部楼层
………………腿神大我彻底彻底的服了…………
速度与质量兼备啊…………我完全没看出来有卡帧的…………
但是进入菜单界面,阴影仍继续存在……
而且阴影会遮挡其他NPC
我试了一下,4个NPC,速度和频率都不同
反正尽量不用两个值都为6的速度还可以
阴影跟角色脚的距离有点开,阴影透明度应该稍微淡
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2010-6-29 20:10:58 | 显示全部楼层
这个东西是半成品。。。我都说了这个东西有问题啊。。。这个完全不会卡祯。。。我只是说这个东西可能和八方向不兼容,并且初始化的时间长啊
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

6

主题

30

帖子

252

积分

③业余

积分
252
 楼主| 发表于 2010-6-29 20:35:04 | 显示全部楼层

回 23楼(secondsen) 的帖子

是啊 在人物是八方行走时 打开游戏突然卡了一下 但是人物的八方和影子不同的  还有人物和影子的距离 离的远啊
回复 支持 反对

使用道具 举报

6

主题

30

帖子

252

积分

③业余

积分
252
 楼主| 发表于 2010-6-29 20:36:51 | 显示全部楼层
哪么 正立和倒立的影子 用谁最好呢 你们想想吧
回复 支持 反对

使用道具 举报

10

主题

85

帖子

258

积分

③业余

脚本万年废柴

积分
258
QQ
发表于 2010-6-29 20:41:31 | 显示全部楼层

回 25楼(secondsen) 的帖子

我说了我电脑上没有初始化的事件的说……
1.86Ghz的CPU双核 2G内存 8600GT
07年的机子了……一点事没有……
RM好像不会硬解码一类的,我觉得跟显存有关系?
回复 支持 反对

使用道具 举报

550

主题

9116

帖子

214748万

积分

超级版主

如同神一般的存在,腿神!拖后腿的神~~

Rank: 8Rank: 8

积分
2147483647
发表于 2010-6-29 21:05:20 | 显示全部楼层
应该CPU的问题。。。另外,只要有事件就会有初始化。。。你能看到影子就一定有事件。有事件,事件刚生成时会初始化。。。也就是换地图屏幕会变黑的那段时间里进行。

倒立影子要考虑优先级。。。当然是正立的简单。。。这个东西LZ是八方脚本就需要专门定做,自求多福吧
我就是你们的神,庶民们,追随我吧!跟着我一起拖后腿!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|幻想森林

GMT+8, 2024-5-2 19:53 , Processed in 0.021806 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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