[C#] Jeux 2D : Difficultés fluidité deplacement du player

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
Jullopof
Messages : 3
Inscription : 24 Mars 2015 15:00

[C#] Jeux 2D : Difficultés fluidité deplacement du player

Message par Jullopof » 08 Mai 2015 12:26

Bonjour, voici donc mon premier donc si je dérape quelque part n'hésitez pas à me "recadrer" ;)

Voila la situation :

Débutant parmi les débutant, je commence mon apprentissage avec Unity avec un très modeste projet, un jeux de plateforme 2D pour mobiles en m'étant inspiré comme beaucoup de nombreux tutoriels (Madin83, 3DBuzz ...).
Cela fait un mois que je galère pour arriver à un résultat convenable, sans succès.

Le problème est que je n'arrive pas à faire se déplacer mon Player de façon fluide, il y a toujours des lags et c'est assez frustrant de buter sur quelque chose qui me semblait assez simple a la base.
Pour tenter de remédier à ça j'ai essayé toute les methodes de déplacement d'objet que j'ai trouvé :

Je place ici la partie du code utilisé pour les déplacements, la fonction Move qui est appelée par un autre script de mon PLAYER (si vous voulez voir l'intégralité DU SCRIPT dites le moi, je ne voulais pas surcharger le post) :

Code : Tout sélectionner

public void Move(float recupAxisJoystick, bool jump)
	{
		// si player regarde a droite et que l'on va a gauche on flip
		if (recupAxisJoystick < 0 && mon_Player_FacingRight)
			FlipPlayer ();
		else {
			// si player ne regarde pas a droite  et que l'on va a droite on flip
			if (recupAxisJoystick > 0 && !mon_Player_FacingRight)
				FlipPlayer();
		}

		// on avance si mon_PlayerPeutAvancer est true
		if (mon_PlayerPeutAvancer) 
		{
			if ( Mathf.Abs (recupAxisJoystick) > 0.5f)
			{
				// sens determine si on va a gauche ou a droite (-1 a gauche, et 1 a droite)
				float sens = (recupAxisJoystick / Mathf.Abs (recupAxisJoystick));

				// deplacement de mon player en utilisant Velocity
				//mon_Rigidbody2D.velocity = new Vector2 ( sens * mon_MaxSpeed * dTime * 44f , mon_Rigidbody2D.velocity.y);

				// avec Position de mon Rigidody
				//mon_Rigidbody2D.position  = new Vector2 (mon_Rigidbody2D.position.x + (/*recupAxisJoystick **/ sens * mon_MaxSpeed * Time.deltaTime * 0.2f) , mon_Rigidbody2D.position.y);

				// avec AddForce
				//mon_Rigidbody2D.AddForce(new Vector2(sens * mon_MaxSpeed * 3f, 0f));

				// avec position de mon transform
				//transform.position  = new Vector2 (transform.position.x + ( mon_MaxSpeed * 0.01f * sens) , mon_Rigidbody2D.position.y);

				//avec un lerp:
				Vector3 directionX = new Vector3 (transform.position.x + (sens) , transform.position.y, transform.position.z); 
				//transform.position = Vector3.Lerp (transform.position, directionX, Time.deltaTime * mon_MaxSpeed);

				// avec un MoveTowards
				transform.position = Vector3.MoveTowards (transform.position, directionX, dTime * mon_MaxSpeed);
			}
		}
Aucune de ces méthodes ne donne un rendu satisfaisant, avec une caméra fixe le personnage se déplace de manière à peu prêt de manière régulière mais avec des saccade très visibles, et encore pire si j'active mon script de caméra pour suivre le personnage :x

C'est le cas sur mon ordi quand je lance projet, sur mon Galaxy Mega, et aussi sur l'ordi quand je switch mon projet en version pour mac
(j'ai un Macbook Pro retina 15 i7, 16Go avec CG et 512Go de SSD, donc ce n'est pas un manque de performance de ma machine)

je ne devrais peut être pas mais quand je télécharge sur mon iPhone 5 des jeux réalisés avec Unity, je ne peux m'empêcher de comparer la fluidité et là c'est le jour et la nuit, alors que mon projet est bien surchargé !!!

Bon je m'arrête la car ça commence à faire long pour un seul post pour un problème qui va surement vous paraitre enfantin.

Merci d'avance pour vos lumières.

Répondre

Revenir vers « (C#) CSharp »