Rotation Player 2D

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Rotation Player 2D

Message par kikicosmo » 22 Août 2014 11:33

Bonjour à tous

sur mon player 2D, j'utilise un script pour le déplacement avec une rotation de 180° lorsque l'on se déplace vers la gauche, voici le script de la rotation:

Code : Tout sélectionner

		if (x > 0) {
		transform.Translate (x * speed * Time.deltaTime, 0, 0);
			transform.eulerAngles = new Vector2 (0, 0);
	}
		if (x < 0) {
						transform.Translate (-x * speed * Time.deltaTime, 0, 0);
						transform.eulerAngles = new Vector2 (0, 180);
				}
mon perso ayant une queue assez volumineuse, lorsqu'il pivote à 180°, il fait un pas sur le coté et c'est pas trés joli joli,
y'a t'il une possibilité pour que le perso pivote à 180° à partir d'un point donné? genre a partir du centre du corps et non du centre de l'ensemble (queue y compris)
merci

Image

Avatar de l’utilisateur
pated
Messages : 146
Inscription : 25 Juil 2014 01:44
Contact :

Re: Rotation Player 2D

Message par pated » 22 Août 2014 12:04

Salut,

Simple problème de pivot.

- Soit tu mets ton player dans un nouveau gameobject vide et tu centres le pivot désiré au centre local de ce nouveau gameobject vide, dorénavant parent de ton player. Mais attention de modifier tes scripts par rapport à cette nouvelle hiérarchie.

- Soit tu édites via 3DS max, Blender ou autre le fbx de ton perso. Càd: dans ton logiciel d'édition 3D, tu sélectionnes le mesh + ses bones et tu déplaces le tout pour que le futur point pivot voulu se retrouve à la position 0 sur les axes que tu veux et tu réexporte. (Pour les meshs skinnés c'est le centre de la scène qui importe)

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: Rotation Player 2D

Message par kikicosmo » 22 Août 2014 12:19

En fait c'est un player 2D, donc un sprite, auquel j'ai affecté les anims de saut etc...

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: Rotation Player 2D

Message par giyomuSan » 22 Août 2014 15:08

Un scale en x negatif pour le faire flipper suffirais pas si c'est un sprite ...?

Avatar de l’utilisateur
kikicosmo
Messages : 112
Inscription : 01 Août 2014 10:03
Localisation : Carcassonne

Re: Rotation Player 2D

Message par kikicosmo » 22 Août 2014 15:25

J'ai essayé de changer pleins de parametres mais sans succés, ou alors je fais pas le bon truc lol,
pour ce qui est de l'empty, je ne sais plus trop ou mettre mes scripts de déplacements du coup car ca fait tout planter

Avatar de l’utilisateur
LudlowFx
Messages : 1367
Inscription : 19 Sep 2013 05:50

Re: Rotation Player 2D

Message par LudlowFx » 07 Sep 2014 04:52

giyomuSan a écrit :Un scale en x negatif pour le faire flipper suffirais pas si c'est un sprite ...?
Tout à fait, je l'utilise moi-même :

Code : Tout sélectionner

    private void Flip()
    {
        facingRight = !facingRight; // True car c'est souvent vers la droite que pointe le nez d'un personnage au départ, à changer selon besoin. Le reste parle de lui même

        Vector2 currentScale = transform.localScale;
        currentScale.x *= -1;
        transform.localScale = currentScale;
    }
 
et l'utiliser rien de plus simple

Code : Tout sélectionner

        bool facingRight = true; // Au début de ton script

        if (leNomDeTonAxeHorizontal > 0 && !facingRight)
        {
            Flip();
        }
        else if (leNomDeTonAxeHorizontal < 0 && facingRight)
        {
            Flip();
        }
 
Et ainsi les collider suivent correctement (enfin pour ma part aucun souci) les changement de direction. A voir si c'est ce que tu cherchais (sûrement déjà trouvé depuis ton dernier message) !
Merci de lire et de prendre en considération la Nétiquette des Forums avant de poster un sujet !

Répondre

Revenir vers « Scripting »