[Résolu]Problème avec le Overlay

Démarré par MetalZelda, 27 Août 2015 à 19:05

0 Membres et 1 Invité sur ce sujet

27 Août 2015 à 19:05 Dernière édition: 01 Septembre 2015 à 13:22 par MetalZelda
Bonjour

Avant toute chose je tiens à préciser que je tourne sur l'editeur 1.4.2 ainsi que la dernière maj de solarus, le problème que je rencontre (et dont j'ai un peu de mal a voir) c'est l'overlay, j'ai repris ton script dans tes tuto Chris (de l'overlay qui scroll) mais au bout d'un moment l'image se coupe, bizzarement 1 fois sur 10 lorsqu'on va tout en haut à gauche de la map l'overlay se met a glitch (apparition et disparition)

Vidéo du glitch
https://www.youtube.com/watch?v=SzvLxQLeucA&feature=youtu.be

Le script en question

local map = ...
local game = map:get_game()

map.overlay_angles = {
 7 * math.pi / 4
}
map.overlay_step = 1

function map:set_overlay()

 map.overlay = sol.surface.create("fogs/overworld_smallcloud.png")
 map.overlay:set_opacity(96)
 map.overlay_m = sol.movement.create("straight")
 map.restart_overlay_movement()

end

function map:restart_overlay_movement()

 map.overlay_m:set_speed(16)
 map.overlay_m:set_max_distance(100)
 map.overlay_m:set_angle(map.overlay_angles[map.overlay_step])
 map.overlay_step = map.overlay_step + 1
 if map.overlay_step > #map.overlay_angles then
   map.overlay_step = 1
 end
 map.overlay_m:start(map.overlay, function()
   map:restart_overlay_movement()
 end)

end

function map:on_started(destination)

 map:set_overlay()

end

function map:on_draw(destination_surface)

 -- Make the overlay scroll with the camera, but slightly faster to make
 -- a depth effect.
 local camera_x, camera_y = self:get_camera_position()
 local overlay_width, overlay_height = map.overlay:get_size()
 local screen_width, screen_height = destination_surface:get_size()
 local x, y = camera_x, camera_y
 x, y = -math.floor(x), -math.floor(y)

 -- The overlay's image may be shorter than the screen, so we repeat its
 -- pattern. Furthermore, it also has a movement so let's make sure it
 -- will always fill the whole screen.
 x = x % overlay_width - 2 * overlay_width
 y = y % overlay_height - 2 * overlay_height

 local dst_y = y
 while dst_y < screen_height + overlay_height do
   local dst_x = x
   while dst_x < screen_width + overlay_width do
     -- Repeat the overlay's pattern.
     map.overlay:draw(destination_surface, dst_x, dst_y)
     dst_x = dst_x + overlay_width
   end
   dst_y = dst_y + overlay_height
 end

end


Merci a ceux qui trouveront le probleme

Edit, resolu, j'avais mal vu le code  :mrgreen:
Sauf le bug d'affichage, je sais pas d'ou ca vient  :huh:

C'est quoi le bug d'affichage exactement ?
Sur la vidéo, le problème que je vois c'est que vers la fin de la vidéo l'overlay ne se répète pas.
Chaîne Twitch : diffusion en direct de sessions de développement de Solarus, de création de jeux, de parties de jeux vidéo.
Chaîne YouTube : replays des diffusions en direct, tutos Solarus
Compte Twitter : pour être au courant des nouveautés
Chat Discord : pour discuter en direct avec la communauté Solarus

Citation de: Christopho le 28 Août 2015 à 16:57
C'est quoi le bug d'affichage exactement ?
Sur la vidéo, le problème que je vois c'est que vers la fin de la vidéo l'overlay ne se répète pas.

Je dirais plus que c'est un clipping, etrangement quand ca arrive l'éditeur plante quand je ferme la fenêtre du jeu, ptetre du a autre chose mais je signale quand meme ^^

https://www.youtube.com/watch?v=GR87RxJYuDE&feature=youtu.be