Das wasserspiegelungs script spiegelt gar nicht, sondern dreht nur um! Help
Hallo, ich habe vorhin festgestellt, dass dieses:
Wasserspiegelungsscript gar nicht richtig spiegelt, sondern die Gafik nur um 180° dreht. Das funktioniert, wenn der Charakter von beiden seiten gleich aussieht, aber sonst ist es komisch.

Meine frage ist, gibt es eine möglichkeit das script so zu verändern, dass es tatsächlich spiegelt, bzw kann das einer für miach machen?
~Shiza
|
|
Quellcode |
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 |
#==============================================================================
# %u25A0 Sprite_Reflection
# Based on Sprite_Mirror, Modified By: JmsPlDnl, rewritten entirely by Rataime
#==============================================================================
CATERPILLAR_COMPATIBLE = true
class Game_Party
attr_reader :characters
end
class Sprite_Reflection < RPG::Sprite
attr_accessor :character
def initialize(viewport=nil, character=nil,self_angle = 180)
super(viewport)
@character = character
@self_angle=self_angle
self.opacity=0
@reflected=false
@former=false
@moving=false
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 1)==7
@reflected=true
@former=true
end
update
end
def update
super
if @tile_id != @character.tile_id or
@character_name != @character.character_name or
@character_hue != @character.character_hue
@tile_id = @character.tile_id
@character_name = @character.character_name
@character_hue = @character.character_hue
if @tile_id >= 384
self.bitmap = RPG::Cache.tile($game_map.tileset_name,
@tile_id, @character.character_hue)
self.src_rect.set(0, 0, 32, 32)
self.ox = 16
self.oy = 32
else
self.bitmap = RPG::Cache.character(@character.character_name,
@character.character_hue)
@cw = bitmap.width / 4
@ch = bitmap.height / 4
self.ox = @cw / 2
self.oy = @ch
end
end
self.visible = (not @character.transparent)
if @tile_id == 0
sx = (@character.pattern) * @cw
sy = (@character.direction - 2) / 2 * @ch
if @character.direction== 6
sy = ( 4- 2) / 2 * @ch
end
if @character.direction== 4
sy = ( 6- 2) / 2 * @ch
end
if @character.direction != 4 and @character.direction != 6
sy = (@character.direction - 2) / 2 * @ch
end
end
self.x = @character.screen_x
self.y = @character.screen_y-5
@moving=!(@character.real_x%128==0 and @character.real_y%128==0)
@d=@character.direction
@rect=[sx, sy, @cw, @ch]
if !(@moving)
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 1)==7
@reflected=true
@former=true
else
@reflected=false
@former=false
end
else
case @d
when 2
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 2)==7
@reflected=true
if @former==false
@offset = (@character.screen_y%32)*@ch/32
@rect=[sx, sy, @cw, @offset]
self.y=@character.screen_y-5
end
else
@reflected=false
end
when 4
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 1)!=7
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx, sy, @offset, @ch]
self.x=@character.screen_x
else
@reflected=true
if @former==false
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx @offset, sy, @cw-@offset, @ch]
self.x=@character.screen_x-@offset
end
end
when 6
if $game_map.terrain_tag(@character.real_x/128 1,@character.real_y/128 1)!=7
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx @offset, sy, @cw-@offset, @ch]
self.x=@character.screen_x-@offset
else
@reflected=true
if @former==false
@offset = ((@character.screen_x-@cw/2)%32)*@cw/32
@rect=[sx, sy, @offset, @ch]
self.x=@character.screen_x
end
end
when 8
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 2)==7
@reflected=true
if $game_map.terrain_tag(@character.real_x/128,@character.real_y/128 1)!=7
@offset = (@character.screen_y%32)*@ch/32
@rect=[sx, sy, @cw, @offset]
self.y=@character.screen_y-5
end
else
@reflected=false
end
end
end
if @reflected
self.opacity=128
else
@rect=[sx, sy, @cw, @ch]
self.opacity=0
end
if $game_map.terrain_tag((@character.real_x 64)/128,@character.real_y/128 2)!=7
if $game_map.terrain_tag((@character.real_x 64)/128,@character.real_y/128 2)!=7
@rect[1]= @rect[1] @ch/2
@rect[3]= @rect[3]/2
self.y = self.y - @ch/2
else
@reflected=false
end
end
self.src_rect.set(@rect[0],@rect[1],@rect[2],@rect[3])
@character.is_a?(Game_Player) ? self.z = 9 : self.z = 5
self.blend_type = @character.blend_type
self.bush_depth = @character.bush_depth
if @character.animation_id != 0
animation = $data_animations[@character.animation_id]
animation(animation, true)
@character.animation_id = 0
end
self.angle = @self_angle
end
end
#===================================================
# %u25BC CLASS Sprite_Character edit
#===================================================
class Sprite_Character < RPG::Sprite
alias reflect_initialize initialize
def initialize(viewport, character = nil)
@character = character
@reflection = []
super(viewport)
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["r"])
@reflection.push(Sprite_Reflection.new(viewport,@character))
end
if (character.is_a?(Game_Event) and character.list!=nil and character.list[0].code == 108 and character.list[0].parameters == ["hero_r"])
@reflection.push(Sprite_Reflection.new(viewport,$game_player))
#===================================================
# %u25CF Compatibility with fukuyama's caterpillar script
#===================================================
if CATERPILLAR_COMPATIBLE and $game_party.characters!=nil
for member in $game_party.characters
@reflection.push(Sprite_Reflection.new(viewport,member))
end
end
#===================================================
# %u25CF End of the compatibility
#===================================================
end
reflect_initialize(viewport, @character)
end
alias reflect_update update
def update
reflect_update
if @reflection!=nil
for reflect in @reflection
reflect.update
end
end
end
end |
zum Lesen den Text mit der Maus markieren
Wasserspiegelungsscript gar nicht richtig spiegelt, sondern die Gafik nur um 180° dreht. Das funktioniert, wenn der Charakter von beiden seiten gleich aussieht, aber sonst ist es komisch.

Meine frage ist, gibt es eine möglichkeit das script so zu verändern, dass es tatsächlich spiegelt, bzw kann das einer für miach machen?
~Shiza
Doch, das ist um 180° gedreht, aber es ist der sprite, der in die andere richtung guckt:
stimmt garnicht, alle stimmen nicht xDDas was du da reingestellt hast, ist ziemlich unogisch
im ersten Bild stimmt das mit den 180° gedreht.
Beim zweiten hällt ist die Sprite zwar gespuegelt, aber sein Stab irgendwie nicht? Woran liegt das?
Das einzige was ein Spiegel vertauscht ist vorne und hinten. D.H wenn der chara den STab in der rechten Hand hält muss das Spiegelbild von sich aus links halten. probierts mal selbst vorm spiegel aus. wenn ihr den rechten Arm hebt hebt das Spiegelbild den linken
@ Gumpi
nein, an das script hab ich zwar auch schon gedacht, aber das ist mir erstens zu viel und zwietens gibts noch n paar bugs, ausserdem arbeitet das mit n paar anderen scripts nicht zusammen (z.b train actor)
nein, an das script hab ich zwar auch schon gedacht, aber das ist mir erstens zu viel und zwietens gibts noch n paar bugs, ausserdem arbeitet das mit n paar anderen scripts nicht zusammen (z.b train actor)
Benutzerinformationen überspringen
Motto: Wer anderen eine Bratwurst brät, der hat ein Bratwurstbratgerät.
Bei mir gibt das Teil sowieso ganz viele Syntax-Error O.o
Naja, probier mal nach Zeile 169 (self.angle = @self_angle) das hier einzufügen:
/edit:
Obwohl, so ists eigentlich schöner ^^
Naja, probier mal nach Zeile 169 (self.angle = @self_angle) das hier einzufügen:
|
|
Ruby Quellcode |
1 2 3 4 5 |
if @d == 2 or @d == 8 self.mirror = true else self.mirror = false end |
/edit:
Obwohl, so ists eigentlich schöner ^^
|
|
Ruby Quellcode |
1 |
self.mirror = (@d == 2 or @d == 8) |
Ne, sry das funktioniert nicht. wenn ich das self.angle = @self_angle stehen lasse und das darunter einfüge, dann ändert sich gar nichts, außer, dass es nen kleinen grafikruckler gibt und man kurz die beine des jeweiligen chara über seinem kopf sieht.
Wenn ich das self.angle = @self_angle rauslösche, dann gibt es wieder dieses kleine grafikproblem und der chara ist nur horizontal gespiegelt und kommt mir entgegen.
Wenn ich das self.angle = @self_angle rauslösche, dann gibt es wieder dieses kleine grafikproblem und der chara ist nur horizontal gespiegelt und kommt mir entgegen.
Ähnliche Themen
-
Einsteigerhilfe »-
Andere Charaktere erscheinen lassen!
(26. März 2009, 10:45)
-
Kampfsysteme »-
Events im Wasser Spiegeln V3.3
(8. Dezember 2007, 19:09)
-
Ressourcen- & Gestaltungsforum »-
Screenshot-Thread #2 ~ Zeigt erneut, was ihr könnt.
(29. Juli 2006, 03:01)
-
Events & Technik »-
Move Route Problem
(19. Juni 2007, 14:28)
-
RGSS 1 Probleme & Talk »-
Wasserspiegelungen
(10. Juli 2006, 20:53)




