RPG Creator : créez votre MMORPG ou RPG sans aucune connaissance en programmation


Disponible le 4 Juin !




- Jouez à votre jeu sur tablettes tactiles, Smartphones et navigateurs Web
- Personnalisez vos menus
- Dessinez facilement et rapidement vos cartes
- Créez des actions pour le combat A-RPG


www.rpgcreator.net


Heures au format UTC + 1 heure [ Heure d’été ]




Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 
Auteur Message
 Sujet du message: [Tutorial] Faire marcher un personnage
MessagePublié: 29 Juil 2007, 13:47 
Villageois (Nv 1)

Inscrit le: 18 Juin 2007, 00:00
Messages: 16
Points d'aide: 0/60

Créations :

Voir ses créations

Bonjour à tous !

Voici un tutorial pour faire marcher un perso !

n12 Bah ! Tout le monde sait faire ça !

n14 Détrompez vous, 85 % des programmateur amateur qui se lance sur GM ne savent pas, alors que c'est super simple

Voici la procedure :

Vous créez un objet que vous nommerez perso.
Ensuite, dans la zone sprite de l'objet, vous y ajouterez votre sprite.

Une fois cela fait, vérifiez que le perso est visible mais pas solide.

C'est bon ?

Alors la suite se corse un peu.

Vous cliquez sur Add Event et vois selectionnez Create dans la boite de dialogue qui s'ouvre à vous.

Et la, à droite vous selectionnerez execute a code (deplacez vous avec les onglet si vous ne trouvez pas).

Et vous y ajouterez :

Code: Tout sélectionner
global.facing = "D"
image_speed = 0.5
moving = 0
movestep = 0
movespeed = 3   // Votre perso marche pixel par pixel



Envuite, dans le menu d'en bas vous y rajouterez Step, et vous ajouterez idem qu'au premier Execute Code :


Code: Tout sélectionner
// Mouvement du perso
var fholdd, fholdu, fholdl, fholdr, cc;

// Verification des touches du clavier
holdd = keyboard_check(vk_down)
holdu = keyboard_check(vk_up)
holdl = keyboard_check(vk_left)
holdr = keyboard_check(vk_right)

// Annulation des touches opposée
if holdu && holdd {
    holdu=0
    holdd=0
}
if holdl && holdr {
    holdl=0
    holdr=0
}


if holdd ||holdu || holdl || holdr {
    // Changement de sprite si ce n'est pas déjà fait
    if !moving {
        if holdd { sprite_index=sprLinkRunD; global.facing="D" }
        else if holdu { sprite_index=sprLinkRunU; global.facing="U" }
        if holdl { sprite_index=sprLinkRunL; global.facing="L" }
        else if holdr { sprite_index=sprLinkRunR; global.facing="R" }
    }
    moving=1
    // Correction de sprite
    if (holdd && !holdl && !holdr) { sprite_index=sprLinkRunD; global.facing="D" }
    else if (holdu && !holdl && !holdr) { sprite_index=sprLinkRunU; global.facing="U" }
    else if (holdl && !holdd && !holdu) { sprite_index=sprLinkRunL; global.facing="L" }
    else if (holdr && !holdd && !holdu) { sprite_index=sprLinkRunR; global.facing="R" }
    if (holdd && holdl && sprite_index!=sprLinkRunD && sprite_index!=sprLinkRunL) { sprite_index=sprLinkRunL; global.facing="L" }
    else if (holdd && holdr && sprite_index!=sprLinkRunD && sprite_index!=sprLinkRunR) { sprite_index=sprLinkRunR; global.facing="R" }
    else if (holdu && holdl && sprite_index!=sprLinkRunU && sprite_index!=sprLinkRunL) { sprite_index=sprLinkRunL; global.facing="L" }
    else if (holdu && holdr && sprite_index!=sprLinkRunU && sprite_index!=sprLinkRunR) { sprite_index=sprLinkRunR; global.facing="R" }
} else { moving=0 }

if moving {
    // Determine le delai entre chaque pas
    if (holdd || holdu) && (holdl || holdr) { movestep+=(movespeed/sqrt(2)) }
    else { movestep+=movespeed }
    // Début du mouvement
    while movestep>=1 {
        movestep-=1
        fholdd=0; fholdu=0; fholdl=0; fholdr=0;

        for (cc=6; cc>0; cc-=1) {
        if holdu {
            if !place_free(x,y-1) {
                if place_free(x-cc,y-1) && !(holdr || fholdr) { fholdl=1 }
                else if place_free(x+cc,y-1) && !(holdl || fholdl) { fholdr=1 }
            }
        } else if holdd {
            if !place_free(x,y+1) {
                if place_free(x-cc,y+1) && !(holdr || fholdr) { fholdl=1 }
                else if place_free(x+cc,y+1) && !(holdl || fholdl) { fholdr=1 }
            }
        }
        if holdl {
            if !place_free(x-1,y) {
                if place_free(x-1,y-cc) && !(holdd || fholdd) { fholdu=1 }
                else if place_free(x-1,y+cc) && !(holdu || fholdu) { fholdd=1 }
            }
        } else if holdr {
            if !place_free(x+1,y) {
                if place_free(x+1,y-cc) && !(holdd || fholdd) { fholdu=1 }
                else if place_free(x+1,y+cc) && !(holdu || fholdu) { fholdd=1 }
            }
        }
        }

        xstep=(holdr || fholdr)-(holdl || fholdl)
        ystep=(holdd || fholdd)-(holdu || fholdu)
        if place_free(x+xstep,y) { x+=xstep }
        if place_free(x,y+ystep) { y+=ystep }
    }
} else {

    switch sprite_index {
        case sprLinkRunD: sprite_index=sprLinkStandD; break;
        case sprLinkRunU: sprite_index=sprLinkStandU; break;
        case sprLinkRunL: sprite_index=sprLinkStandL; break;
        case sprLinkRunR: sprite_index=sprLinkStandR; break;
    }
    movestep=0
}

depth=-y


N'oubliez pas de modifier les sprLinkRun* par le nom de vos sprites.


Ensuite, on fait l'ombre du perso dans le menu en bas vous faîte Draw et vous y rajouterez le script :

Code: Tout sélectionner
draw_sprite(ombre,0,x,y)
draw_sprite(sprite_index,-1,x,y)


N'oubliez pas de créer l'ombre du perso et vous le nommerez ombre.



Voila c'est fini si vous avez des problèmes postez ici ou MP moi


Haut
 Profil  
 
 Sujet du message: Re: [Tutorial] Faire marcher un personnage
MessagePublié: 31 Juil 2007, 00:23 
Ancien membre du staff
Ancien membre du staff

Inscrit le: 11 Aoû 2006, 00:00
Messages: 731
Points d'aide: 0/60

Créations :

Voir ses créations

Merci de citer le nom de l'auteur. Ce script se trouve sur le forum du zfgc ! Wink


Haut
 Profil  
 
 Sujet du message: Re: [Tutorial] Faire marcher un personnage
MessagePublié: 21 Déc 2007, 21:51 
Villageois (Nv 3)

Inscrit le: 15 Fév 2007, 01:00
Messages: 54
Points d'aide: 0/60

Créations :

Voir ses créations

C'est beau mais...
Moi jutilise une autre façon..égale,comme je pourrais dire^^
Si j'ai le droit de le poster,dites le moi...Merci quand meme pour ton aide happy !


Haut
 Profil  
 
Afficher les messages depuis:  Trier par  
Publier un nouveau sujet Répondre au sujet  [ 3 messages ] 

Heures au format UTC + 1 heure [ Heure d’été ]


Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité


Vous ne pouvez pas publier de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas insérer de pièces jointes dans ce forum

Rechercher pour:
Sauter vers:  
cron
RPG Creative Forum version 5 ; Tous droits réservés
phpBB Group (Traduit par Xaphos)
Optimisé pour une résolution 1024*728