Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème d'Animation en C# sur Unity

Sujet résolu
1 avril 2016 à 14:15:46

Bonjour, Bonsoir !

Alors voilà, j'ai depuis quelques mois une folle envie de créer un jeu vidéo, après m'être renseigné, j'ai choisi de le développer sur unity. J'ai pris quelques cours sur Le C# et sur Java (bien qu'étant encore assez perdu, j'arrive à comprendre la globalité des lignes de code). Je commence mon jeu il y a 2 jours et, déception... je suis bloqué à ma première scène sur un problème que je pense enfantin mais qui m'embête fortement. 

Mon jeu est en 2D et ma première scène consiste à afficher un logo au milieu de l'écran qui, en passant la souris dessus, s’agrandirait, si on décide  de cliquer dessus, le logo s’agrandit comme précédemment et rétrécirait jusqu'à disparaître, jusque là il n'y a aucun problème, j'arrive à créer les animations, c'est après que ça coince.

Je n'arrive pas à trouver les bons scripts pour déclencher les animations via un clique de souris ou en passant la souris dessus, j'utilise Microsoft Visual Studio (mais je ne pense pas que ce soit problématique). J'ai longtemps cherché sur des forums français, anglais mais rien n'y fait, les codes ne marchent pas ou je n'arrive pas à les adapter à ma situation. 

Je vous invoque, grands connaisseurs d'Open Classroom !  :magicien:

Si vous pouviez m'expliquer clairement le code ou la solution pour que je puisse me débrouiller seul comme un grand à l'avenir je vous en serais infiniment reconnaissant ! :D

Bien à vous, Mamu 

  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2016 à 15:53:31

Salut ! Tu peux utiliser Event System dans un UI ! Ton image est-elle dans un canvas ?

Si oui, ajoute lui un Event Trigger (Add Component > Event > Event Trigger) et un Graphic Raycaster (même endroit).

Ajoute lui aussi un script et mets ces fonctions dedans :

public void Pointe()
{
	// Code pour agrandissement
}

public void Clique()
{
	// Code pour agrandissement puis rétrécissement
}
	

Le mot clé public est très important !

Une fois fait, dans ton Event Trigger, clique sur "Add New Event Type" et choisis "Pointer Enter". Clique sur le + et choisis en Objet ton Image et dans la zone fonction, cherche ton script et sélectionne ta méthode Pointe() (si tu n'a pas mis public, elle n'apparaitra pas). À ce moment là, les deux sont liées ! Si ton curseur rentre dans l'image, le code contenu dans Pointe() va s'exécuter.

Tu peux maintenant faire pareil avec "Pointer Click" et "Clique()".

Tu peux bien sûr mettre le nom de fonction que tu veux :)

J'espère que ça t'aidera !

-
Edité par Algorun 1 avril 2016 à 16:27:27

  • Partager sur Facebook
  • Partager sur Twitter
Celui qui croit tout savoir ne sait rien
1 avril 2016 à 17:27:11

Un gros merci pour ta réponse mais j'ai encore un problème (pas taper !)

je ne sais pas quel est le code pour jouer une animation... j'essaye un "Animation.Play" mais VisualStudio me dit qu'il y a une erreur :o

Sur la banque de code de Unity il est écrit que pour jouer une animation il faut :

public bool Play(PlayMode mode = PlayMode.StopSameLayer);
public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer);
public bool Play(PlayMode mode = PlayMode.StopSameLayer);
public bool Play(string animation, PlayMode mode = PlayMode.StopSameLayer);

mais je ne comprend pas du tout le code :( .

Bien à vous, Mamu

  • Partager sur Facebook
  • Partager sur Twitter
1 avril 2016 à 20:33:12

Ce sont tout simplement les paramètres à passer à ta fonction Play() ! Je ne suis pas très calé en animation, mais en gros tu dois lui passer une chaîne de caractère avec le nom de nom animation (marcher, courir, sauter...) ! Regarde la doc si tu veux des détails plus poussés ^^
  • Partager sur Facebook
  • Partager sur Twitter
Celui qui croit tout savoir ne sait rien
1 avril 2016 à 23:50:43

Encore un grand merci, 

mais du coup, dernière question, pour animer mon animation je dois préciser le nom du ficher d'animation ou celui de l'animator ? 

  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2016 à 11:52:25

Hum... Je ne sais pas si j'ai bien compris la question mais je vais tenter une réponse :-°

Déjà tu dois avoir mis à ton personnage un component Animator auquel tu aura lié ton Controller. Dans le controller, c'est là que tu a lier toutes tes animations entre elles, et ajouter des variables que tu pourra récupérer dans un script pour les modifier et donc modifier ton animation (la fameuse chaîne à passer en argument) !

Si ça n'a pas du tout répondu à la question, je ne peux que tu conseiller ce lien ^^ C'est en anglais et assez long mais cela t'explique comment construire une animation de A à Z !

  • Partager sur Facebook
  • Partager sur Twitter
Celui qui croit tout savoir ne sait rien
2 avril 2016 à 13:54:56

Je vais suivre tes conseils de ce pas et je te remercie infiniment d'avoir pris le temps de m'accorder ta sagesse :D !
  • Partager sur Facebook
  • Partager sur Twitter
2 avril 2016 à 13:56:46

Ahah aucun soucis c'est avec plaisir ;)
  • Partager sur Facebook
  • Partager sur Twitter
Celui qui croit tout savoir ne sait rien
23 octobre 2017 à 12:15:13

Bonjours je suis entraind de créé un jeux, je suis debutant dans le codage.

J'ai fait une page de code mais quand je revient sur unity et que je met play sa me met ( all compiller errors have to be fixed before you can enter playmode )

Quelq'un pourrait me dire mes erreurs : 

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

public class CharacterMotor : MonoBehaviour {

// Animation du persso

Animation animations;

// Vitesse de déplacement 

public float walkSpeed;

public float runSpeed;

public float turnSpeed;

// Inputs

public string inputFront;

public string inputBack;

public string inputLeft;

public string inputRight;

public Vector3 jumpSpeed;

capsuleCollider playerCollider;

void Start () {

animation = gameObject.Getcomponent<animation> ();

playerCollider = GameObject.Getcomponent<CapsuleCollider> ();

}

void Update () {

// si on avance

if (Input.GetKey(inputFront))

{

transform.Translate(0, 0, walkSpeed * Time.deltaTime);

animations.Play ("Walk");

}

// si on recule

if (Input.GetKey(inputBack))

{

transform.Translate(0, 0, -(walkSpeed / 2) * Time.deltaTime);

animations.Play("Walk");

}

// rotation à gauche

if (Input.GetKey(inputLeft))

{

transform.Rotate(0, -turnSpeed * Time.deltaTime, 0);

}

// rotation à droite

if (Input.GetKey(inputRight))

{

transform.Rotate(0, turnSpeed * Time.deltaTime, 0);

}

  • Partager sur Facebook
  • Partager sur Twitter
24 octobre 2017 à 16:49:49

@Fryxis : Et sinon tu peux créer ton propre thread. De plus, ta console devrait afficher les erreurs en question pour te permettre de corriger tes fautes.
  • Partager sur Facebook
  • Partager sur Twitter