❤ 0 Auteur : Fabien
Logiciel : RPG Maker XP
Nombre de scripts : 1
Fonctionnalités
Voici un script pour afficher une image qui ondule.
Pour ceux qui connaissent, c'est le même que sous RM2K, mais plus paramétrable et donc mieux.
Installation
A placer au-dessus de Main.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
| class Image_onde_xy
attr_accessor :x
attr_accessor:y
attr_accessor :op
attr_accessor:ampl
attr_accessor:puls
attr_accessor:angle
attr_accessor:blend
attr_accessor:img, :va ,:t
def initialize(x,y,nom,ampl=40,puls=4,pas=3,blend=0)
@t=0
@pas=pas
@ampl=ampl
@puls=puls
@op=255
@angle=0
@blend=blend
@va=0
@x=x
@y=y
@nom=nom
if nom .is_a?(String)
@bitsav = RPG::Cache.picture(@nom)
@img=Sprite.new
@img.bitmap=RPG::Cache.picture(@nom)
else
@bitsav = nom
@img=Sprite.new
@img.bitmap=nom
end
@img.blend_type=@blend
@img.opacity=0
super()
maj
end
def dispose
@img.bitmap.dispose
end
def maj
@t+=1
# @angle+=@va
#@img.angle=@angle
@img.opacity=@op
if @nom .is_a?(String)
@bitsav = RPG::Cache.picture(@nom)
@img.bitmap=RPG::Cache.picture(@nom)
else
@bitsav = @nom
@img.bitmap=@nom
end
@img.x =@x
@img.y =@y
@img.z=100
#@img.bitmap=RPG::Cache.picture(@nom)
if @nom .is_a?(String)
@img.bitmap=RPG::Cache.picture(@nom)
else
@img.bitmap=@nom
end
@img.ox = @img.bitmap.width / 2
@img.oy = @img.bitmap.height / 2
@img.z=55
w=@img.bitmap.width
h=@img.bitmap.height
pas=@pas
ampl=@ampl
puls=@puls
puls=puls.to_f
pas=pas.to_f
rect=[]
max=(w/pas)
for i in 0..max
rect[i]=Rect.new(i*pas,0, pas,h)
end
@img.bitmap=Bitmap.new(w,h+2*ampl)
@img.y-=ampl
for i in 0..max
@img.bitmap.blt(i*pas,ampl*(1+Math.sin((@t-i)/(puls*pas))),@bitsav, rect[i])
end
@bitsav=@img.bitmap
w=@img.bitmap.width
h=@img.bitmap.height
rect=[]
max=(h/pas)
for i in 0..max
rect[i]=Rect.new(0,i*pas, w, pas)
end
@img.bitmap=Bitmap.new(w+2*ampl,h)
@img.x-=ampl
for i in 0..max
@img.bitmap.blt(ampl*(1+Math.sin((@t-i)/(puls*pas))),i*pas,@bitsav, rect[i])
end
end
end |
Pour faire onduler une image, faites un événement avec en appel de script :
$imgonde=Image_onde_xy.new(position_x, position_y, "nom de l'image sans l'extension mais entre guillemets")[/code]
position_x : la position de l'image en x (de la gauche).
position_y : la position de l'image en y (du haut).
"nom de l'image sans l'extension mais entre guillemets" : l'image à faire onduler.
Reste un truc à faire: mettre à jour l'image chaque seconde.
1
2
3
4
| if $imgonde.is_a?(Image_onde_x) or $imgonde.is_a?(Image_onde_y) or $imgonde.is_a?(Image_onde_xy)
$imgonde.maj
end
end |
Soit vous mettez ça dans un event en processus parallèle sur votre carte, soit dans Scene_map, dans la fonction update, juste en dessous du "loop do".
|