Bonjour,
Je galère sur un scrolling parallax. Il fonction bien à part un horrible décalage de 2 pixels dès que mon personnage s'arrête
Pour les déplacements, j'ai fait un truc tout simple, un script sur un event step :
if keyboard_check(vk_left)
{x-=2; y-=0; sprite_index=player_moveG;}
Et pour faire mon scrolling, pareil j'ai fait très simple :
background_x[0] = view_xview[0] * 1 //ciel
background_x[1] = view_xview[0] * 0.9 //fond01
background_x[2] = view_xview[0] * 0.8 //fond02
Mais en fait, le décalage équivaut aux nombres de pixels attribués à la valeur "x" de mon script de déplacement
Si quelqu'un a la solution...
Bonjour,
Actives le scrolling uniquement lorsque le personnage bouge.
Dane le step event du personnage:
var char_speed = 2;
var move = (keyboard_check(vk_right) - keyboard_check(vk_left));
if (move!=0)
{
x+=char_speed * move;
background_x[0] = view_xview[0] * 0;//ciel ne bouge pas
background_x[1] = view_xview[0] * 0.2; //fond01 bouge un peu
background_x[2] = view_xview[0] * 0.5;//fond02 bouge à la moitié de la vitesse de la vue (donc de la vitesse du personnage)
}
Tu ne nous as pas mis le code qui change le vue mais je suppose que tu as mis les propriétés de la vue avec le suivi de l'objet du personnage.
Conceptgame
Merci
Par contre, j'ai 2 autres problèmes à présent:
1) le ciel est fixe... oui en fait c'est que je me suis mal exprimé Le "ciel" c'est surtout un Soleil. Donc ce que je veux c'est que ce BG (qui fait la taille de l'écran de jeu, soit 800x450) "donne l'impression" de ne pas bouger.
2) Mon personnage va se déplacer de droite à gauche, sur un BG qui fait 8000x450. Mon objet-player est presque au bord de la droite du BG (et j'ai réglé la view en disant de suivre l'objet-player et en précisant Hbor=350 et Vbor=350). Mais dès que je bouge mon perso, fond01 et fond02 se décalent d'un coup ! Après ça va, mais c'est du coup comment faire si mon personnage débute dans la room entre 450 et 800pxl ?
Et puis, pourrais-tu m'expliquer ton script. Parce que en fait même celui que j'utilisais je ne le comprenais pas (notamment (keyboard_check(vk_right) - keyboard_check(vk_left)) et background_x[0] = view_xview[0] * 0, surtout le "*")
Et encore merci
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
De rien.
1) ah oui dans ce cas là tu peux laisser à 1.
2) tu peux utiliser le même code sur l'événement de création ou un script pour ne pas avoir à écrire le code 2 fois.
Il y a peut-être plus efficace mais à cette heure là de la journée, c'est le plus simple auquel je pense.
Pour keyboard_check(vk_right) - keyboard_check(vk_left), la première expression te renvoie 1 si la touche droite est appuyée et la deuxième 1 si la touche gauche est appuyée. Donc avec le signe tu diminue sur l'axe x si c'est la touche gauche et tu augmentes en x si c'est la touche droite. Les deux touches appuyées en même temps font que les 2 expressions s'annulent et ton personnage ne bouge pas.
Pour background_x[0] = view_xview[0] * 0, le 0 était là juste pour te montrer que j'avais changé la valeur croyant que tu voulais un fond sans scrolling. Si cela avait été le cas tu pouvais enlever tout simplement cette ligne de code. Pour les autres backgrounds qui ont une valeur différentes de zéro, l'idée est que la position du fond suivent la vue (donc ton joueur) avec une vitesse différente. Pour une valeur inférieure à 1 le fond se déplace plus lentement que la vue (donc que ton sprite joueur). Pour une valeur supérieure à 1 le fond se déplace plus rapidement que la vue (typiquement les éléments en premier plan). Egale à 1, le fond suit exactement la vue, donc le background est fixe par rapport au joueur même s'il bouge dans la scène (room).
Conceptgame
Chalut
Bon pour le pt 2 je me suis pas bien expliqué, mais de toute façon ça change rien, fausse joie : j'ai toujours cet étrange décalage, non plus dès que je m'arrête, mais dès que je me retourne :'(
Et si J'appuie sur gauche et droite en même temps, mon personnage avance mais le scrolling s'annuelle et tous mes fonds se figent x(
Je vais tenter une autre approche avec autre script...
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
J'ai essayé ça... sans succès
"Ce script vous permettra d'afficher vos backgrounds avec une impression de distance.
Plus un objet est éloigné de notre oeil plus il met du temps à sortir du champ de vision lors d'un déplacement.
Exemple quand on roule en voiture les montagnes semblent resté figé alors que les arbres sur le côté de la route défilent à toute vitesse.
créez le script:
if ini_bg_xy<1
{
bg_x=argument1
bg_y=argument2
ini_bg_xy+=1
}
cam_xspeed=view_xview-cam_xprevious
cam_yspeed=view_yview-cam_yprevious
cam_xprevious=view_xview
cam_yprevious=view_yview
bg_x+=cam_xspeed*argument3
bg_y+=cam_yspeed*argument4
if argument5==0{draw_background(argument0,bg_x,bg_y)}
if argument5==1{draw_background_tiled(argument0,bg_x,bg_y)}
créez un objet avec un depth importent.
event create:
cam_xprevious = view_xview
cam_yprevious = view_yview
cam_xspeed=0
cam_yspeed=0
ini_bg_xy=0
event draw:
appelez le script avec les bon arguments:
argument0= background
argument1= x
argument2= y
argument3= vitesse x ( exemple 0.7 )
argument4= vitesse y
argument5= tiled (true/false)
exemple: scr_draw_bg(bg_montagne1,0,120,0.7,0.7,1)"
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
Commence par le début : apprends d'abord comment fonctionnent les scripts, et ensuite utilises-les, sinon tu n'arriveras pas à grand chose.
Apprendre comment fonctionnent les scripts, c'est deux choses :
1- apprendre la syntaxe et les instructions
2- apprendre à quoi correspondent et comment utiliser les variables intrinsèques au moteur
C'est un peu de travaille, mais vraiment rien d'insurmontable. C'est comme apprendre une langue qui aurait 20 mots de vocabulaires et une grammaire ultra-simpliste sans aucune exception .
Merci, mais avec AGS, je connais le fonctionnement de base des scripts (assez proche finalement de GMS, même si le langage d'AGS est légèrement simplifié)
Mais simplement connaitre un langage n'est pas très utile en soi. C'est comme apprendre une langue étrangère dans les bouquins. C'est bien (et encore) mais rien ne remplacera de "vivre" cette langue et sa culture. Partir d'un script est donc un excellent moyen d'apprentissage
D'ailleurs, tu remarqueras que le premier script c'est moi tout seul qui l'ait codé avec mes p'ti doigts
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
Désolé si j'avais mal compris, ta phrase que j'avais mis en citation m'avait fait penser que tu ne connaissais pas vraiment le fonctionnement des scripts de Game Maker.
Mmmmh... j'ai un ptit doute quand même sur la pertinence du parallèle linguistique sur ce point (même si c'est moi qui l'ai lancé au départ :P). Une langue étrangère, tu peux ne pas la maitriser complètement (voir très mal), et par empirisme et mimétisme, au contact d'autres, apprendre à "te débrouiller" ; au final tu peux très bien te faire comprendre en "baragouinant", et même mieux, si tu formules une phrases qui est correcte "à 90%", tu te feras parfaitement comprendre et ce sera largement suffisant.
En informatique, si les règles de grammaire et le vocabulaire sont méga ultra simplistes par rapport à une vraie langue, tu ne peux en revanche pas te permettre de baragouiner, et une formulation juste "à 90%" sera incompréhensible pour la machine ou du moins pas du tout dans le sens que tu voulais (= bug garanti). Tu es obligé d'avoir une connaissance THÉORIQUE très précise du langage que tu utilises, et d'avoir des formulations toujours justes "à 100%" ; tu ne peux te permettre aucune imprécision sur la grammaire ou le vocabulaire.
Imagine que tu veuilles parler Allemand mais que la moindre micro-erreur de déclinaison, de genre de l'article, de placement du verbe dans la phrase, etc., rende systématiquement tes phrases complètement incompréhensibles ... tu seras bien obligé de passer beaucoup de temps dans les bouquins avant d'espérer pouvoir pratiquer.
C'est pas trop le lieu, du coup je te réponds pas mais nos remarques se complètent
Pour mon problème, je suis revenu à mon script de départ. Car le soucis était toujours présent. Je cherche du côté du sprite.
Si il y a des choses importantes à savoir pour les sprites sur GMS, je suis preneur
WHITE IS MORE DEAD - ÉPISODES I-II-III - Saison 1 (Point & Clic)
Je te ferai un projet exemple où le scrolling en parallaxe fonctionne comme il faut. Avec les commentaires qui vont bien. Je pense que c'est plus simple.
EDIT: voilà un exemple: http://clicks-en-stock.concept-game.eu/Downloads/ParallaxScrolling.gmz
En espérant que cela répond à ta question.
Conceptgame
Pages