Qual Utilisateur confirmé: Rang ****
Messages : 1450 Projet Actuel : Tower Defence
| Sujet: Textures répétitives sur un objet Ven 5 Oct 2012 - 8:42 | |
| Bonjour Tout d'abord voici une image pour mieux comprendre les explications : - Spoiler:
Image 01 : J'ai une room avec des objets ( des blocs initialement en 32x32 que je redimensionne/rotate comme je veux depuis l'éditeur de room ) j'aimerais appliquer dessus une texture ( image 02 ) pour avoir le résultat de l'image 03 Un peu comme ici par exemple : - Spoiler:
ou là :
Donc je vois pas très bien comment faire en fait Merci |
|
onilink_ Modérateur
Messages : 9183 Localisation : Montpellier Projet Actuel : Planet Centauri
OniDev
| Sujet: Re: Textures répétitives sur un objet Ven 5 Oct 2012 - 13:33 | |
| Alors voici une methode qui fonctionne très bien, mais qui nécessite une chose : tes sprites de masquage devront être blancs. Et ton objet doit avoir les coordonnées (0, 0) #Create Ici on crée une surface vide (0,0,0,0) de la taille de la room, et on y dessine tous les objets qui doivent être masqués. Ils doivent être blancs. S'ils ne le sont pas et que tu ne veux te prendre la tête va dans Scripts et cherche la fonction draw_sprite_unicolore. - Code:
-
surf = surface_create(room_width, room_height) surface_set_target(surf)
draw_clear_alpha(0, 0) // on mets les valeurs de la surface a (0, 0, 0, 0)
// Mask doit être le parent de tes objets a masquer si tu en a plusieurs for(i=0; i<instance_number(Mask); i+=1) { ii = instance_find(Mask, i) // On dessine le sprite (blanc) des masques draw_sprite_ext(ii.sprite_index, ii.image_index, ii.x, ii.y, ii.image_xscale, ii.image_yscale, ii.image_angle, c_white, 1) ii.visible = false }
draw_set_blend_mode_ext( bm_dest_color, bm_zero ) draw_background_tiled(Texture0, 0, 0) draw_set_blend_mode(bm_normal)
surface_reset_target() Et dans le draw tu dessine ta surface: - Code:
-
draw_surface(surf, x, y) Pense a libérer la surface a la fin de la room pour ne pas avoir un débordement de mémoire. Exemple pour un Mask qui a comme sprite: Rendu: |
|