Partagez
Aller en bas
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Bitmap et viewport.[résolu]

le Lun 14 Mar 2016 - 19:35
Bonjour à tous!

J'ai essayé d'intégrer ce code en suivant les indications données sur ce site: Cliquez ici!

@myViewport = Viewport.new(0, 0, 640, 480)
@mySprite = Sprite.new(@myViewport)
@myBitmap = RPG::Cache.picture("test.png")
@mySprite.bitmap = @myBitmap

Le site ne précise pas si cela est compatible pour RPG Maker Vx Ace, et si c'est le cas, où est l'erreur?


Cordialement


Dernière édition par Mythendor le Jeu 17 Mar 2016 - 22:34, édité 1 fois
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Lun 14 Mar 2016 - 21:01
J'ai vu pas mal de tuto pourris, mais celui-ci bat des records!!

Si tu veux savoir comment fonctionne les viewport, sprite et Bitmap, autant virer tous les scripts (si si tout) et de commencer a partir de rien. C'est à dire ça :

Code:
while !Input.trigger?(:B)
  Graphics.update
  Input.update
end

ça ouvre la fenêtre et ça attend l'appui sur le bouton servant d'annulation (Echap)

Maintenant, tu veux du viewport, du sprite et du bitmap, c'est très simple :

Code:
Graphics.resize_screen(640, 480)


viewportGauche = Viewport.new(0, 0, 320, 480)
viewportDroit = Viewport.new(320, 0, 320, 480)


spriteBleu = Sprite.new(viewportGauche)
spriteBleu.bitmap = Bitmap.new(50,50)
spriteBleu.bitmap.fill_rect(0,0,50,50, Color.new(0,0,255))
spriteBleu.x = 0
spriteBleu.y = 0

spriteRouge = Sprite.new(viewportDroit)
spriteRouge.bitmap = Bitmap.new(50,50)
spriteRouge.bitmap.fill_rect(0,0,50,50, Color.new(255,0,0))
spriteRouge.x = 0
spriteRouge.y = 0

while !Input.trigger?(:B)
  Graphics.update
  Input.update
end

spriteRouge.bitmap.dispose
spriteRouge.dispose

spriteBleu.bitmap.dispose
spriteBleu.dispose
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Lun 14 Mar 2016 - 21:07
Merci de la réponse, j'essaierais ça dès que je peux.

Et je viens de tomber sur ton site ^^ : http://www.tonyryudev.com/joomla3/index.php/menu-mes-developpements/menu-cours-ruby-rgss/11-rgss-tuto-1-debuter-avec-le-rgss

Pas mal, on va voir ce que ça donne! Bitmap et viewport.[résolu] 522164
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Lun 14 Mar 2016 - 21:11
Attention, par contre ces tuto sont orienté pour la version XP.
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Lun 14 Mar 2016 - 21:22
Uniquement ceux présents sur le site où également celui que tu viens de mettre sur ce post même?


tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Mar 15 Mar 2016 - 7:53
celui sur ce topic, je l'ai fait directement sur VxAce
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Mar 15 Mar 2016 - 18:11
J'ai jeté un coup d’œil à ces quelques lignes de code, pour résumer en quelques mots:

-Le viewport sert à définir l'endroit, où l'on peut voir.

-Le bitmap, une image.

-Le sprite, une image quel l'on peut déplacer.

Si oui, j'ai vu qu'il y avait des dimensions à leur donner, dans le script, mais si l'image importée, a déjà des dimensions prédéfinis comme un personnage de 20 px x20 px (exemple). Est-il nécessaire de lui donner des dimensions? Cela ne risque pas de zoomer sur lles pixels, et le rendre moche?


J'ignore si la question est bien posée. ^^

tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Mar 15 Mar 2016 - 18:43
Fais le test du script, c'est très simple :

Bitmap et viewport.[résolu] Script10

Le viewport défini une zone d'affichage.
Le sprite est un objet d'affichage, modifiable, déplaceable, déformable.
Le bitmap est la texture que l'on pose sur le sprite.

Regarde le fichier d'aide fourni avec le logiciel et fait des tests sur ces classes, tu en apprendras beaucoup plus.
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Mer 16 Mar 2016 - 19:06
Je pense avoir compris le système, pour l'essentiel, sauf pour les images importées:

Bitmap.new(filename)
Loads the graphic file specified in filename and creates a bitmap object.

Also automatically searches files included in RGSS-RTP and encrypted archives. File extensions may be omitted.


Aurais-tu un petit exercice, à me faire faire, pour que je me teste? Par exemple, me demander un carré jaune, ou je ne sais quoi?

Merci par avance! Smile

tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Mer 16 Mar 2016 - 19:14
un petit exercice :

Afficher dans un même viewport, 3 sprites superposés :

- 1 en dessous de taille 50*50 de couleur bleu, et alpha 128
- 1 au milieu contenant un battler quelconque d'une opacité 128
- 1 au dessus de taille 100*100 de couleur orange et alpha 64
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Mer 16 Mar 2016 - 20:14
Voilà ce que ça donne, si je ne me suis pas trompé:

Bitmap et viewport.[résolu] A524a7c6d2

Code:
Graphics.resize_screen(640, 480)



spriteFairy = Sprite.new
spriteFairy.bitmap = Bitmap.new("Graphics/Battlers/Fairy")
spriteFairy.x = 0
spriteFairy.y = 0
spriteFairy.z = 2



spriteBleu = Sprite.new
spriteBleu.bitmap = Bitmap.new(50,50)
spriteBleu.bitmap.fill_rect(0,0,50,50, Color.new(0,0,255,128))
spriteBleu.x = 30
spriteBleu.y = 30
spriteFairy.z = 1

spriteorange = Sprite.new
spriteorange.bitmap = Bitmap.new(100,100)
spriteorange.bitmap.fill_rect(0,0,100,100, Color.new(255,125,0,64))
spriteorange.x = 0
spriteorange.y = 0
spriteFairy.z = 3

while !Input.trigger?(:B)
  Graphics.update
  Input.update
end

spriteorange.bitmap.dispose
spriteorange.dispose

spriteFairy.bitmap.dispose
spriteFairy.dispose


spriteBleu.bitmap.dispose
spriteBleu.dispose

tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Mer 16 Mar 2016 - 21:02
Presque le sans fautes, manque juste la propriété opacity du sprite du battler.

Exercice suivant :

juste un sprite 10*10 rouge, mais que l'on peut bouger dans tous les sens, sans qu'il sorte de l'écran.

Ces fonctions retournent vrai si le bouton correspondant est appuyé :

Input.repeat?(:DOWN)
Input.repeat?(:UP)
Input.repeat?(:RIGHT)
Input.repeat?(:LEFT)

La procédure Input.update vérifie les boutons appuyés et met à jour le tableau interne correspondant. La vérification des touches doit donc se faire après cette appel.
Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Jeu 17 Mar 2016 - 20:47
J'ai beau me creuser la tête, je ne vois pas ce qu'il cloche, pourtant, l'exercice a l'air simple:

Code:
Graphics.resize_screen(640, 480)



spriterouge = Sprite.new
spriterouge.bitmap = Bitmap.new(10,10)
spriterouge.bitmap.fill_rect(0,0,10,10, Color.new(255,0,0))
spriterouge.x = 0
spriterouge.y = 0


while !Input.trigger?(:B)
  
  Graphics.update
  Input.update
  
    spriterouge_down if Input.repeat?(:DOWN)
    spriterouge_up if Input.repeat?(:UP)
    spriterouge_right if Input.repeat?(:RIGHT)
    spriterouge_left if Input.repeat?(:LEFT)
 
end


  

@spriterouge.bitmap.dispose
@spriterouge.dispose
tonyryu
tonyryu
Membre

Nombre de messages : 895
Age : 39
Localisation : Près de Nantes
Distinction : aucune
Date d'inscription : 27/05/2010
http://www.tonyryudev.com

Résolu Re: Bitmap et viewport.[résolu]

le Jeu 17 Mar 2016 - 21:39
Avec quelques modifications

Code:
Graphics.resize_screen(640, 480)

spriteRouge = Sprite.new
spriteRouge.bitmap = Bitmap.new(10,10)
spriteRouge.bitmap.fill_rect(0,0,10,10, Color.new(255,0,0))
spriteRouge.x = 315
spriteRouge.y = 235

vitesse = 6

while !Input.trigger?(:B)
  Graphics.update
  Input.update
 
  spriteRouge.x += vitesse if Input.press?(:RIGHT)
  spriteRouge.x -= vitesse if Input.press?(:LEFT)
  spriteRouge.y += vitesse if Input.press?(:DOWN)
  spriteRouge.y -= vitesse if Input.press?(:UP)
 
  spriteRouge.x = 0 if spriteRouge.x < 0
  spriteRouge.x = 630 if spriteRouge.x > 630
  spriteRouge.y = 0 if spriteRouge.y < 0
  spriteRouge.y = 470 if spriteRouge.y > 470
end

spriteRouge.bitmap.dispose
spriteRouge.dispose

Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Jeu 17 Mar 2016 - 21:49
Effectivement, je n'avais pas assez creusé la question, merci des informations et des exercices! Smile

Mythendor
Mythendor
Membre

Nombre de messages : 50
Distinction : aucune
Date d'inscription : 14/02/2016

Résolu Re: Bitmap et viewport.[résolu]

le Jeu 17 Mar 2016 - 22:32
Histoire de compléter l'exercice, j'ai mis la vitesse à valeur égale de la taille du sprite, pour avoir un déplacement par à coup, comme pour un jeu RPG-tactics (bien que je ne sache pas si c'est la bonne méthode):

Code:
Graphics.resize_screen(640, 480)

spriteRouge = Sprite.new
spriteRouge.bitmap = Bitmap.new(20,20)
spriteRouge.bitmap.fill_rect(0,0,20,20, Color.new(255,0,0))
spriteRouge.x = 315
spriteRouge.y = 235

vitesse = 20

while !Input.trigger?(:B)
  Graphics.update
  Input.update
 
  spriteRouge.x += vitesse if Input.repeat?(:RIGHT)
  spriteRouge.x -= vitesse if Input.repeat?(:LEFT)
  spriteRouge.y += vitesse if Input.repeat?(:DOWN)
  spriteRouge.y -= vitesse if Input.repeat?(:UP)
 
  spriteRouge.x = 0 if spriteRouge.x < 0
  spriteRouge.x = 630 if spriteRouge.x > 630
  spriteRouge.y = 0 if spriteRouge.y < 0
  spriteRouge.y = 470 if spriteRouge.y > 470
end

spriteRouge.bitmap.dispose
spriteRouge.dispose


Bon, j'ai compris, à peu de choses près, l'essentiel sur les bitmaps et viewports, merci et à bientôt sur un autre post! Smile
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum