Project1
标题:
如何简单实现角色拖影效果?
[打印本页]
作者:
某死灵法师
时间:
2014-1-21 23:13
标题:
如何简单实现角色拖影效果?
游戏里有一个按住ctrl大幅加速的效果,想在加速的时候给角色套上一个拖影
不需要现成脚本实例,提供方案就好
作者:
yagami
时间:
2014-1-21 23:27
用个数组spritearr 和一个开关 boola
update里
boola = inputkey(ctrl)?true:false
if !spritearr .empty?
遍历数组里的元素 将里面的精灵opacity减少 如果opacity<0 将精灵移出数组
end
按下移动后 角色会做个move的函数
在move执行之前 如果开关是开着的 生成个精灵(对应行走图方向) 精灵坐标=角色坐标 加入到数组里
作者:
某死灵法师
时间:
2014-1-22 02:56
yagami 发表于 2014-1-21 23:27
用个数组spritearr 和一个开关 boola
update里
boola = inputkey(ctrl)?true:false
角色move动作相关脚本在哪里
作者:
芯☆淡茹水
时间:
2014-1-22 09:58
可以多添加 2 个 主角行走图的 Sprite,然后更改这两个 Sprite 的色调和透明度(变黑,逐渐变淡),然后其原点稍微靠后,可见关闭。
在地图场景判断:if Input.dir4 and Input.press?(CTRL) 可见打开。
作者:
yagami
时间:
2014-1-22 13:38
http://rpg.blue/thread-347056-1-1.html
我将这效果实现了下 至于CTRL加速功能 请自行添加
作者:
heiwang1997
时间:
2014-1-23 21:50
module BFS_Shadow
attr_accessor :_shadow
def shadow_on
@_shadow = true
end
def shadow_off
@_shadow = false
end
end
class Spriteset_Map
alias cy_ini initialize
def initialize
[url=home.php?mod=space&uid=134219]@Time[/url] = 0
@canying = []
cy_ini
end
alias cy_update update
def update
cy_update
if @time == 2
@time = 0
else
@time += 1
end
for i in @character_sprites
if i.character._shadow and i.character.moving? and @time == 1
sprite = Sprite_Canying.new(@viewport1, i.character)
sprite.z = i.z
@canying.push sprite
end
end
@canying.each{|s|s.opacity <= 0 ? (s.visible = false ; @canying.delete(s)) : (s.opacity -= 15 ; s.update)} if @canying != []
end
end
class Game_Player
include BFS_Shadow
end
class Game_Event
include BFS_Shadow
end
class Sprite_Canying < Sprite_Character
def initialize(viewport, character = nil)
@shadow_x = character.real_x
@shadow_y = character.real_y
@shadow_jump_peak = character.jump_peak
@shadow_jump_count = character.jump_count
@first_create = true
super(viewport, character)
end
def update
if @first_create
super
@first_create = false
else
self.x = get_screen_x
self.y = get_screen_y
end
end
def get_screen_x
return (@shadow_x - $game_map.display_x + 3) / 4 + 16
end
def get_screen_y
y = (@shadow_y - $game_map.display_y + 3) / 4 + 32
if @shadow_jump_count >= @shadow_jump_peak
n = @shadow_jump_count - @shadow_jump_peak
else
n = @shadow_jump_peak - @shadow_jump_count
end
return y - (@shadow_jump_peak * @shadow_jump_peak - n * n) / 2
end
end
class Game_Character
attr_accessor :jump_peak
attr_accessor :jump_count
end
复制代码
这个支持地图滚动时的残影,使用时对$game_player实例使用shadow_on方法即可(关闭用shadow_off)
欢迎光临 Project1 (https://rpg.blue/)
Powered by Discuz! X3.1