1. home >
  2. Large Language Artefacts >
  3. yassine >
  4. personnage 2D

November 22nd at 1:49pm


personnage 2D

Prompt

Tu es un assistant styliste expert en écriture de code LUA qui génèrent des assets de sprite de personnages en pixel art. Je souhaite que tu Personnalises ce code de sorte à ce que tu répondes au demandes de personnalisation de personnage que je te demanderai plus tard. Il est interdit que tu me génères un code qui ait moins de 117 lignes, cela implique que tu restes extrèmement fidèle au code de base. Tu réfléchsi à la position relative de chaque élément pour générer les informations. Par exemple, le corps est 5 pixel en dessous des yeux. Donc, le tee-shirt ne peut pas être positionné 4 pixel sous les yeux. Tu dois avoir cette logique pour chaque élément. Tu dois essayer de ne pas recouvrir les pixels noirs qui servent d'outline et de forme de base du personnage. La création d’un tee-shirt, par exemple, implique que les mains (les 4 derniers pixels blancs inférieur des bras) ne doivent pas être recouvertes de bleu pastel, ainsi que le visage / la tête. Applque cette logique pour chaque vêtement. Tu ne dois pas faire moins de lignes que le code original, mais cela ne veux pas dire que tu peux en écrire plus. Si je te demande de dessiner un accessoire comme une montre par exemple, le nombre de lignes de code ne peut pas être réduit, mais augmenté puisqu'il faut prendre en compte cette donnée pour le personnage. Mais par exemple si je te demande de générer un tee-shirt rouge, et que tu te bases sur un code avec un tee-shirt vert, il est inutile de garder la couleur verte dans le code, puisque ce n'est pas exploité dans le résultat final. Tu dois malgré tout rester fidèle au code de base. ne modifie le code qu'à partir des fonction de dessin des éléments pour chaque personnalisation que je te demande, mais garde bien en tête la façon dont le code original fonctionne.

(script)

characters-export

Script

-- CharactePixel-Art Generator pour Aseprite (adapté pour 21x29) -- Auteur : ChatGPT -- Génère un personnage pixelisé avec proportions adaptées. -- Vérification de l'interface utilisateur if not app.isUIAvailable then app.alert("L'interface utilisateur n'est pas disponible. Le script s'arrête.") return end -- Paramètres globaux local spriteWidth = 21 local spriteHeight = 29 local colors = { main = Color{r=173, g=216, b=230, a=255}, -- T-shirt bleu pastel secondary = Color{r=0, g=0, b=0, a=255}, -- Outline (noir) short = Color{r=0, g=0, b=0, a=255}, -- Short noir transparent = Color{r=0, g=0, b=0, a=0}, -- Transparent skin = Color{r=255, g=224, b=189, a=255}, -- Peau coat = Color{r=245, g=222, b=179, a=255}, -- Trench coat beige beard = Color{r=139, g=69, b=19, a=255} -- Barbe marron }

-- Création du sprite local sprite = Sprite(spriteWidth, spriteHeight, ColorMode.RGB) local image = sprite.cels[1].image

-- Fonctions pour dessiner des formes de base local function drawEllipse(image, centerX, centerY, radiusX, radiusY, color) for y = -radiusY, radiusY do for x = -radiusX, radiusX do if ((x x) / (radiusX radiusX) + (y y) / (radiusY radiusY)) <= 1 then image:drawPixel(centerX + x, centerY + y, color) end end end end

local function drawRect(image, x, y, width, height, color) for dy = 0, height - 1 do for dx = 0, width - 1 do image:drawPixel(x + dx, y + dy, color) end end end

-- Fonction pour ajouter des pixels transparents aux positions spécifiques local function addTransparentPixels() image:drawPixel(2, 16, colors.transparent) -- Pixel transparent à (3, 17) image:drawPixel(18, 16, colors.transparent) -- Pixel transparent à (19, 17) image:drawPixel(2, 23, colors.transparent) -- Pixel transparent à (3, 24) image:drawPixel(18, 23, colors.transparent) -- Pixel transparent à (19, 24) end

-- Fonctions de dessin des éléments local function drawHead() local radiusX = 10 -- Augmenté pour compenser la nouvelle largeur local radiusY = 8 local centerX = (spriteWidth - 1) // 2 -- Ajusté pour le centre d'un canvas impair local centerY = 8

-- Contour de la tête et peau drawEllipse(image, centerX, centerY, radiusX, radiusY, colors.secondary) -- Contour drawEllipse(image, centerX, centerY, radiusX - 1, radiusY - 1, colors.skin) -- Peau

-- Cheveux noirs (arc de cercle couvrant la moitié supérieure) for y = -radiusY - 1, -1 do -- Étend les cheveux légèrement plus haut for x = -radiusX, radiusX do if ((x x) / (radiusX radiusX) + (y y) / (radiusY radiusY)) <= 1 then image:drawPixel(centerX + x, centerY + y, colors.secondary) -- Couverture noire end end end

-- Hairline ajustée : ajout de deux rectangles 2x3 -- Position : 5 pixels à droite/gauche du centre (en x) et 1 pixel au-dessus des yeux (en y) drawRect(image, centerX - 8, 8, 2, 3, colors.secondary) -- Rectangle gauche drawRect(image, centerX + 7, 8, 2, 3, colors.secondary) -- Rectangle droit

-- Yeux drawRect(image, 7, 9, 1, 3, colors.secondary) -- Oeil gauche drawRect(image, 13, 9, 1, 3, colors.secondary) -- Oeil droit

-- Blush rose pastel sous les yeux local blushOpacity = 0.6 -- Opacité pour un effet pastel local blushColor = Color{r=255, g=182, b=193, a=math.floor(255 * blushOpacity)} -- Rose pastel image:drawPixel(6, 12, blushColor) -- Blush gauche image:drawPixel(7, 12, blushColor) -- Blush gauche image:drawPixel(13, 12, blushColor) -- Blush droit image:drawPixel(14, 12, blushColor) -- Blush droit end

local function drawNeck() drawRect(image, 10, 16, 2, 1, colors.skin) end

local function drawBody() drawRect(image, 5, 13, 11, 11, colors.secondary) -- Contour du corps drawRect(image, 6, 14, 9, 6, colors.main) -- Tee-shirt bleu pastel drawRect(image, 6, 20, 9, 4, colors.jean) -- Jean gris foncé drawRect(image, 10, 13, 3, 1, colors.secondary) -- Col en V end

local function drawArms() drawRect(image, 2, 16, 4, 8, colors.secondary) -- Bras gauche, contour noir drawRect(image, 3, 17, 2, 5, colors.main) -- Tee-shirt sur bras gauche drawRect(image, 3, 22, 2, 2, colors.skin) -- Mains bras gauche drawRect(image, 15, 16, 4, 8, colors.secondary) -- Bras droit, contour noir drawRect(image, 16, 17, 2, 5, colors.main) -- Tee-shirt sur bras droit drawRect(image, 16, 22, 2, 2, colors.skin) -- Mains bras droit end

local function drawLegs() drawRect(image, 5, 24, 1, 4, colors.secondary) -- Jambe gauche, contour drawRect(image, 6, 24, 2, 4, colors.jean) -- Remplissage jambe gauche drawRect(image, 8, 24, 1, 4, colors.secondary) -- Noir entre les jambes drawRect(image, 12, 24, 1, 4, colors.secondary) -- Jambe droite, contour drawRect(image, 13, 24, 2, 4, colors.jean) -- Remplissage jambe droite end

local function drawCrotch() image:drawPixel(9, 24, colors.secondary) -- Pixel noir gauche image:drawPixel(10, 24, colors.secondary) -- Pixel noir centre image:drawPixel(11, 24, colors.secondary) -- Pixel noir droit end

local function drawShoulderBars() image:drawPixel(5, 17, colors.main) image:drawPixel(5, 18, colors.main) image:drawPixel(15, 17, colors.main) image:drawPixel(15, 18, colors.main) end

-- Dessine le personnage local function drawCharacter() drawBody() drawArms() drawLegs() drawCrotch() drawHead() drawNeck() drawShoulderBars() addTransparentPixels() end

-- Appel drawCharacter() app.refresh()


Liste des références associées au projet