Le 18 avril 2018 à 17:03:44 Angeioo a écrit :
Vous utilisez quel version d'unity en passant ? Moi la 4.6f ;)
C'est étonnant que tu utilises encore une si vieille version. J'ai mis à jour récemment, je suis à 2017.3.
Bonjour,
Le 18 avril 2018 à 20:15:20 Angeioo a écrit
Ouais mais changer de version il à des trucs qui vont changer d'autre qui vont arriver et du coup je pense que d'une version à une le code change ...
Rester sur une version de type 4.xx n'est pas une bonne option sauf si tu utilise certaine particularité d'une version pro.
Il est fort possible que tu ais pas mal de code à refactoriser mais le jeu en vaut la chandelle.
Je me demandais d'ailleurs, sous unity pour les collisions il faut créer un script sa je sais et il faut attaché au deux objets ? Ou tu créer un script qui touche que le première objet qui doit rentrer en collision ?
Là tout dépends de ton GamePlay.
Par exemple dans un jeu de casse brique classique, la brique est détruite quand une balle la touche et éventuellement emet un son de collision particulier.
C'est donc au niveau du GameObject qui représente la brique que tu doit traiter le OnCollision.
Maintenant imagine que tu souhaites connaitre aussi la distance parcourue par une balle avant sa destruction.
C'est donc au niveau du GameObject qui représente la balle que tu doit effectuer ce calcul pour chaques collisions.
En gros dans ce cas précis tu doit traiter le OnCollision pour la brique et aussi pour la balle.
A+
Oyez Oyez.
Je reviens à la charge avec une question.
J'ai maintenant mon perso (un cube) qui se déplace. Cependant j'aimerais savoir quelle face de mon cube touche le sol (pour jouer une animation en fonction de cela ) . J'avais pensé à faire 4 coliders, un pour chaque face, mais ça m'a l'air un peu compliqué. Unity n'a pas quelque chose d'intégré pour le faire ?
Le 18 avril 2018 à 23:12:45 Jullien2001 a écrit :
Oyez Oyez.Je reviens à la charge avec une question.
J'ai maintenant mon perso (un cube) qui se déplace. Cependant j'aimerais savoir quelle face de mon cube touche le sol (pour jouer une animation en fonction de cela ) . J'avais pensé à faire 4 coliders, un pour chaque face, mais ça m'a l'air un peu compliqué. Unity n'a pas quelque chose d'intégré pour le faire ?
Si le seul est toujours en bas de ton cube, j'avais pensé à utiliser la rotation de ton objet. Tu sais que par défaut c'est la face d'en bas si aucune rotation, si rotation à 90°, c'est la face de droite etc...
En faisant une recherche Google, j'ai trouvé une réponse plus "propre". https://forum.unity.com/threads/checking-what-face-an-object-collided-with.203846/#post-1378228
Le 18 avril 2018 à 23:32:06 TheRealMarco a écrit :
Le 18 avril 2018 à 23:12:45 Jullien2001 a écrit :
Oyez Oyez.Je reviens à la charge avec une question.
J'ai maintenant mon perso (un cube) qui se déplace. Cependant j'aimerais savoir quelle face de mon cube touche le sol (pour jouer une animation en fonction de cela ) . J'avais pensé à faire 4 coliders, un pour chaque face, mais ça m'a l'air un peu compliqué. Unity n'a pas quelque chose d'intégré pour le faire ?
Si le seul est toujours en bas de ton cube, j'avais pensé à utiliser la rotation de ton objet. Tu sais que par défaut c'est la face d'en bas si aucune rotation, si rotation à 90°, c'est la face de droite etc...
En faisant une recherche Google, j'ai trouvé une réponse plus "propre". https://forum.unity.com/threads/checking-what-face-an-object-collided-with.203846/#post-1378228
Effectivement la rotation me semble être le plus simple à utiliser.
Je vais regarder ton lien aussi. Mais je ne sais pas si ça va être plus simple étant donné que c'est "OnCollision" Et que j'aimerais tester ça dans mon "update" ( en gros dans ma fonction de déplacement)
Aussi j'ai une question par rapport aux animations.
Voici mon jeu au début:
Si j'appuie sur la flèche de droite il se retrouve comme ceci à la fin de l'animation
Seulement je me demandais si l'animation "figeait" l'objet. Ou si l'animation était juste bloquée à la fin. Car dans le second cas je ne sais pas si je pourrais jouais une autre animation après
En gros je veux que si j'utilise ma flèche de gauche ou de droite il se relève (vers la droite ou la gauche ) en jouant l'animation correspondante.
Une fois l'animation terminée, tu pourrais remettre le controller en position "Idle" et déplacer ton cube là où l'animation s'était arrêté.
Donc si j'étais toi une fois l'animation terminé je placerais la position et la rotation du cube dans des variables.
Puis tu reset l'animation à son état initiale et tu déplace ton cube à la position et la rotation sauvé auparavant.
J'espère que ça va t'être utile
Le 19 avril 2018 à 16:10:13 -Adridu84- a écrit :
Une fois l'animation terminée, tu pourrais remettre le controller en position "Idle" et déplacer ton cube là où l'animation s'était arrêté.
Donc si j'étais toi une fois l'animation terminé je placerais la position et la rotation du cube dans des variables.
Puis tu reset l'animation à son état initiale et tu déplace ton cube à la position et la rotation sauvé auparavant.J'espère que ça va t'être utile
Ok je vois. En pseudo code ça donnerait un truc du genre?
if (keypressed(rightarrow) && cube.rotation(0,0,0))
{
animation.play(FallToTheRight)
cube.transform.position += 1
cube.transform.rotation(0,90,0)
}
Avec ça dans le controller ( noelshack down)
https://imgur.com/a/8BOeD
Bon je pense avoir bien compris. J'ai toutes les clés en main pour faire ce jeu merci à vous.
Je reviendrais sûrement pour quelques petits détails ou de gros soucis
Bonjour à tous,
Voilà, je suis débutant en création de jeux vidéos, et j'ai posté un sujet qu'un membre ma répondu de venir ici.
Mon sujet est ce lien :
https://www.jeuxvideo.com/forums/42-31-55896862-1-0-1-0-problemes-dans-unity-3d.htm
Comme il me l'a dit, les panneaux jaunes je les ai supprimés.
Maintenant, je suis entrer dans la console.
Pourriez-vous me dire quoi corriger pour qu'il n'y ai plus ces problèmes svp ?
Merci d'avance.
Cordialement.
Un des problèmes est que, ligne 36, 45, 55, et 63 (à chaque if en gros), tu mets un { alors que tu devrais mettre un (.
if {Input.GetKey(inputFront))
devrait être
if (Input.GetKey(inputFront))
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CharacterMotor : MonoBehaviour
{
//Animation du perso
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()
{
animations = 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);
}
}
}
J'ai lu très rapidement le code, possible qu'il y ait d'autres erreurs.
Re bonjour,
J'ai remplacé les { par les ( et ça va nettement mieux !
Quand je clique sur le bouton "Play", je n'ai plus le message d'erreur et je
peux essayer de déplacer mon perso.
Sauf que mon perso, même si j'ai assigné les touches, mon perso ne bouge
toujours pas !
En revanche, j'ai toujours un problème, ça :
Mon problème, j'ai mis une petite barre verte à côté pour vous montrer.
Je pense que ça avoir avec mon perso mais quoi exactement ? Je ne sais pas !
Pourriez-vous me dire comment régler ce problème s'il vous plaît ?
Merci d'avance.
Cordialement.
PS : Mon perso je l'ai créais sur makehuman.
Le 21 avril 2018 à 18:21:24 thekusabi a écrit :
Re bonjour,J'ai remplacé les { par les ( et ça va nettement mieux !
Quand je clique sur le bouton "Play", je n'ai plus le message d'erreur et je
peux essayer de déplacer mon perso.
Sauf que mon perso, même si j'ai assigné les touches, mon perso ne bouge
toujours pas !En revanche, j'ai toujours un problème, ça :
Mon problème, j'ai mis une petite barre verte à côté pour vous montrer.
Je pense que ça avoir avec mon perso mais quoi exactement ? Je ne sais pas !
Pourriez-vous me dire comment régler ce problème s'il vous plaît ?Merci d'avance.
Cordialement.
PS : Mon perso je l'ai créais sur makehuman.
Si tu double clique sur l'erreur, dans la console, tu dois pouvoir accéder directement au GameObject concerné par le problème.
Là, tu as un GameObject qui s'appelle female_casualsuit02Mesh, qui a un composant vide
Pour le problème des mouvements, il va falloir débuger. Essaie d'afficher un message dans les if pour voir si le problème vient du if ou de l'animation.
void Update()
{
//Si on avance
if (Input.GetKey(inputFront))
{
transform.Translate(0, 0, walkSpeed * Time.deltaTime);
animations.Play("walk");
Debug.Log("avancer");
}
//Si on recule
if (Input.GetKey(inputBack))
{
transform.Translate(0, 0, -(walkSpeed / 2) * Time.deltaTime);
animations.Play("walk");
Debug.Log("reculer");
}
//Rotation à gauche
if (Input.GetKey(inputLeft))
{
transform.Rotate(0, -turnSpeed * Time.deltaTime, 0);
Debug.Log("A gauche");
}
//Rotation à droite
if (Input.GetKey(inputRight))
{
transform.Rotate(0, turnSpeed * Time.deltaTime, 0);
Debug.Log("A droite");
}
}
Aussi, fait une capture d'écran de l'inspector en sélectionnant le GameObject "player". Afin que l'on puisse voir si tu as bien mit les variables.
Le 21 avril 2018 à 18:31:29 TheRealMarco a écrit :
Le 21 avril 2018 à 18:21:24 thekusabi a écrit :
Re bonjour,J'ai remplacé les { par les ( et ça va nettement mieux !
Quand je clique sur le bouton "Play", je n'ai plus le message d'erreur et je
peux essayer de déplacer mon perso.
Sauf que mon perso, même si j'ai assigné les touches, mon perso ne bouge
toujours pas !En revanche, j'ai toujours un problème, ça :
Mon problème, j'ai mis une petite barre verte à côté pour vous montrer.
Je pense que ça avoir avec mon perso mais quoi exactement ? Je ne sais pas !
Pourriez-vous me dire comment régler ce problème s'il vous plaît ?Merci d'avance.
Cordialement.
PS : Mon perso je l'ai créais sur makehuman.
Si tu double clique sur l'erreur, dans la console, tu dois pouvoir accéder directement au GameObject concerné par le problème.
Là, tu as un GameObject qui s'appelle female_casualsuit02Mesh, qui a un composant vide
Pour le problème des mouvements, il va falloir débuger. Essaie d'afficher un message dans les if pour voir si le problème vient du if ou de l'animation.
void Update() { //Si on avance if (Input.GetKey(inputFront)) { transform.Translate(0, 0, walkSpeed * Time.deltaTime); animations.Play("walk"); Debug.Log("avancer"); } //Si on recule if (Input.GetKey(inputBack)) { transform.Translate(0, 0, -(walkSpeed / 2) * Time.deltaTime); animations.Play("walk"); Debug.Log("reculer"); } //Rotation à gauche if (Input.GetKey(inputLeft)) { transform.Rotate(0, -turnSpeed * Time.deltaTime, 0); Debug.Log("A gauche"); } //Rotation à droite if (Input.GetKey(inputRight)) { transform.Rotate(0, turnSpeed * Time.deltaTime, 0); Debug.Log("A droite"); } }
Aussi, fait une capture d'écran de l'inspector en sélectionnant le GameObject "player". Afin que l'on puisse voir si tu as bien mit les variables.
Re bonjour,
Alors voici une image quand je clique sur mon perso :
Ensuite, je vais vous montrer 3 images de mes codes qui ont un rapport
avec mes 3 lignes de codes avec les panneaux jaunes :
Ligne 1 :
Ligne 2 :
Ligne 3 :
Voici toutes les infos que je peux vous fournirent.
Excusez moi pour votre patience mais je viens de
débuter sur Unity et j'apprends en même temps.
Merci d'avance.
Cordialement.
PS : La ligne de code où il y a une erreur est surlignée en bleu.
Alors voici une image quand je clique sur mon perso :
En bas à droite, clique sur "Add Component", puis chercher CharacterMotor. Il n'y a plus d'erreurs sur ton script, mais j'imagine qu'aucun GameObject n'utilise ce script, donc rien ne va se passer.
Les avertissements donnés par la console sont indicatifs, ils n'empêchent pas le programme de fonctionner.
Ligne 1 :
En gros, le programme te dit que tu créés une variable playerCollider, mais vu que tu ne l'utilises pas, elle ne sert à rien. Si tu ne souhaites pas utiliser cette variable plus tard, tu peux supprimer la ligne.
Ligne 2 :
Ligne 3 :
J'imagine que tu as copié/collé du vieux code sur internet, car on n'utilise plus GUIText plus d'un an je crois.
A la place, on utilise Text. Et il faut importer using UnityEngine.UI;
.
Le 21 avril 2018 à 19:20:20 TheRealMarco a écrit :
Alors voici une image quand je clique sur mon perso :
En bas à droite, clique sur "Add Component", puis chercher CharacterMotor. Il n'y a plus d'erreurs sur ton script, mais j'imagine qu'aucun GameObject n'utilise ce script, donc rien ne va se passer.
Les avertissements donnés par la console sont indicatifs, ils n'empêchent pas le programme de fonctionner.
Ligne 1 :
En gros, le programme te dit que tu créés une variable playerCollider, mais vu que tu ne l'utilises pas, elle ne sert à rien. Si tu ne souhaites pas utiliser cette variable plus tard, tu peux supprimer la ligne.
Ligne 2 :
Ligne 3 :
J'imagine que tu as copié/collé du vieux code sur internet, car on n'utilise plus GUIText plus d'un an je crois.
A la place, on utilise Text. Et il faut importer
using UnityEngine.UI;
.
Bonjour à tous,
Comme vous pouvez le voir, j'ai mis le character motor et j'ai assigné les touches.
Que veux-tu dire par "Aucun GameObject n'utilise ce script" ?
Pourrais-tu me dire comment faire pour que le gameobject utilise ce script stp ?
Ensuite voici une autre image :
Dans l'image précédante, là où je vous montre le characterMotor, il y a 3 erreurs signaler par
des ronds rouges.
Je double clique sur n'importe quelle ligne (puisque c'est la même erreur pour les 3), et voici
la ligne de code d'où y a l'erreur.
Et enfin dernier point, tu me dis "A la place, on utilise Text. Et il faut importer using UnityEngine.UI;" ?
Pourrais-tu me dire où c'est qu'il faut le mettre stp ? Faut-il le mettre dans la console et si c'est ça, où ?
Si j'utilise des vieux codes, pourriez-vous me donner les vrai codes svp ?
Et enfin, pourriez-vous me dire comment faire marcher mon perso car là je m'y perd svp ?
Merci d'avance.
Cordialement.
Comme vous pouvez le voir, j'ai mis le character motor et j'ai assigné les touches.
Que veux-tu dire par "Aucun GameObject n'utilise ce script" ?
Pourrais-tu me dire comment faire pour que le gameobject utilise ce script stp ?
Ben c'est bon, là tu l'as mit sur le GameObject player, mais il n'y était pas avant.
Et enfin dernier point, tu me dis "A la place, on utilise Text. Et il faut importer using UnityEngine.UI;" ?
Pourrais-tu me dire où c'est qu'il faut le mettre stp ? Faut-il le mettre dans la console et si c'est ça, où ?
Si j'utilise des vieux codes, pourriez-vous me donner les vrai codes svp ?
Ah, oui, tu débutes pas que dans Unity, mais aussi en programmation.
A la première ligne du fichier, il doit y avoir des trucs comme using System; using UnityEngine;
etc... Tu fais une nouvelle ligne, et tu mets using UnityEngine.UI;
, et ensuite, tu modifies GUIText par Text.
Dans l'image précédante, là où je vous montre le characterMotor, il y a 3 erreurs signaler par
des ronds rouges.
Je double clique sur n'importe quelle ligne (puisque c'est la même erreur pour les 3), et voici
la ligne de code d'où y a l'erreur.
Et enfin, pourriez-vous me dire comment faire marcher mon perso car là je m'y perd svp ?
animations.Play("walk");
Cette ligne ordonne au programme : Trouve les animations du personnage, et joue celle qui s'appelle "walk". Le programme plante, parce qu'il ne trouve pas l'animation appelée walk. Es-tu sûr de l'avoir importé ? As-tu vérifié que le nom correspondait bien ?
Yop !
Une p'tite question relative aux animations et plus particulièrement à la gestion des collisions lors de scènes de combats dans un jeu 3D sur Unity. Si quelqu'un peut m'éclairer un peu... J'aimerais savoir si Unity est capable de gérer des collisions "d'armes contre armes". Typiquement : une épée qui vient frapper une autre épée ou un bouclier, par exemple... Je suppose que c'est possible même si j'ignore comment ça marche exactement. Est-ce que le principe du ragdoll peut s'appliquer à un objet attaché au rig comme une épée ou un bouclier ? Est-ce que ça se gère avec un box collider ? Je ne sais pas. Je suis un débutant total sur Unity. Je connais un peu les grands principes de bases du logiciel. J'ai quelques notions de programmation. Mais ça s'arrête là.
J'ai recherché sur internet des vidéos ou des tutoriels qui m'éclaireraient d'avantage mais je n'ai pas trouvé exactement ce que je cherchais. Je suis notamment tombé sur cette vidéo assez impressionnante de réalisme d'un asset d'animations de combats de mêlée : https://www.youtube.com/watch?v=Od-riv-E8g4 En gros, j'aimerais voir le même genre de vidéo mais avec des collisions d'armes contre armes. C'est possible ? Et surtout, ça donnerait quoi visuellement ? Est-ce que c'est propre (pas d'arme qui part dans tous les sens, pas de glitch, etc...) ? Auriez-vous des exemples vidéos de ce que je cherche ?
Merci !
Je sais pas trop comment ça fonctionne non plus, j'ai regardé un peu sur YouTube, et je suis tombé sur :
C'est pas vraiment arme contre arme, mais les deux personnages ont des animations, donc je pense que ça répond à ta question.
Mh... J'ai regardé un peu la vidéo. Je suis pas sûr d'avoir compris car comme je l'ai dit, je suis vraiment débutant en la matière mais je crois que dans ta vidéo, il est plutôt question de marqueurs autour de l'arme et de hitbox sur l'ennemi qui réagissent dès que les marqueurs de l'arme les touchent. En gros, ça permet de balader l'arme comme on veut quand on joue en VR. Ça a l'air vachement cool mais c'est pas vraiment ce que je cherche... Là je viens de trouver une autre vidéo qui ressemble déjà plus (je crois) à ce que je cherche mais du coup, c'est sur Unreal Engine... Au pire, ça ne me dérange pas de passer sur UE vu que de toute façon, je débute donc je ne connais pas beaucoup plus Unity que UE. Mais bon, j'imagine que si UE est capable de ça, Unity doit en être capable aussi...
La vidéo en question : https://www.youtube.com/watch?v=6pG9SZQ0o7w
Vu comment les collisions des balles sur le perso sont réalistes, j'imagine que ça doit rendre pas trop mal en appliquant le même système pour des chocs arme contre arme... J'adorerais voir une vidéo démo (ou mieux : un tutoriel) qui montrerait des collisions entre épées ou entre une épée et un bouclier, par exemple, pour voir ce que ça donne, si ça rend bien. J'ai quelques idées de systèmes de combat que j'aimerais tester. Mais apparemment, ce genre de vidéo n'existe pas. Du coup, j'ai quelques doutes sur la faisabilité ou l'efficacité du truc... :-/
J'ai aucune idée de comment réaliser ça, je suppose qu'il faudrait faire de l'animation procédural. C'est peut-être plus simple à réaliser sur UE qu'Unity à l'heure actuelle.
Dans Gang Beast, qui a été fait sur Unity, ils y arrivent, donc c'est possible.
J'espère que quelqu'un pourra t'en dire plus. Mais je suppose qu'il faut rajouter l'arme dans le ragdoll, même si ça ne me semble pas propre.
Lol ouais enfin Gang Beast, c'est quand même très spécial niveau animation... xD (même si ça reste impressionnant malgré tout) Alors si les animations fantoches étaient une volonté des concepteurs mais qu'il y a moyen de faire un truc plus réaliste, plus normal, au niveau de l'animation en utilisant le ragdoll, des colliders ou je sais pas trop quoi du logiciel, c'est cool ! (Au moins au niveau des armes et éventuellement des bras. Pour le reste, je comptais utiliser de la motion capture avec 2 kinect et ipiSoft ) Mais si y'a pas moyen d'avoir autre chose que ces animations branlantes, je pense qu'il vaudrait mieux que je migre vers UE, en effet...
J'ai cherché des tutos ragdoll mais à chaque fois, ce sont des "ragdoll personnage" ordinaires. Je n'ai pas trouvé de ragdoll avec une sorte de "prolongation" avec un objet intégré au ragdoll. Tu es sûr que ça peut se faire ? Je suppose que oui car après tout, c'est exactement le même principe mais bon... C'est dommage que j'arrive pas à trouver d'exemples en vidéo. J'aimerais vraiment voir ce que ça donne en pratique !
Et sinon, en utilisant juste des box colliders ordinaires qui épouseraient bien les formes de l'arme, y'aurait moyen d'obtenir des collisions assez propres et réalistes, non ? Je précise "qui épouseraient bien les formes de l'arme" car j'ai fait un tuto Unity qui expliquait comment créer une box collider mais c'était vraiment un collider basique en forme de capsule qui entourait le personnage et il l'entourait vraiment très grossièrement donc je suis pas sûr que ce soit très adapté pour ce que j'aimerais faire. Tu aurais une idée de quel genre de collider utilisé (j'entend souvent parlé de "mesh collider", peut-être que ce serait mieux ?) pour réaliser des animations comme j'aimerais (précises au niveau des armes et secondairement, des bras) ? ...