enfaite j'ai fais un script avec un collider Enter et Exit,
sauf que quand mon perso rentre dans le collider trigger de mon PNJ le texte ne s'affiche pas..
(ps : mon script est bon et je l'ai bien assigné)
askip ça vient des Layers mais je sais pas trop ce que c'est et comment résoudre le problème
Le 17 avril 2019 à 21:49:33 baldoodlab a écrit :
enfaite j'ai fais un script avec un collider Enter et Exit,
sauf que quand mon perso rentre dans le collider trigger de mon PNJ le texte ne s'affiche pas..
(ps : mon script est bon et je l'ai bien assigné)
askip ça vient des Layers mais je sais pas trop ce que c'est et comment résoudre le problème
Difficile à deviner le problème comme ça.
Dans l'onglet Scene, tu peux confirmer que si le GameObject s'active / s'affiche mais tu peux pas le voir.
Bonjour, j'ai une question, je veux créer un RPG (en 2D mais c'est pas si important)...
Le problème est le suivant, je veux créer un inventaire, mais je ne sais pas comment m'y prendre...
J veux le faire sans asset ou truc préfaits, du coup j'ai regardé ce tuto :
https://www.youtube.com/watch?v=mR47TBbmsAI
Je me dis que ça pourrait correspondre à ce que je veux faire, mais le problème est que les items sont déjà paramétrés dans les slots...
J voudrais créer des slots vides et pouvoir mettre les items dedans après...
Je me dis que j pourrais modifier donc les scripts du tuto mais maintenant s'ajoute un problème pas technique :
J voudrais créer plusieurs items dans mon jeu et les ajouter selon les besoins au cours du développement de mon projet...
J voudrais m inspirer des systèmes de plusieurs jeux... Attribuer à chaque item un numéro (une id dans leur jeu)...
Mais la plupart des jeux ont des items de la même catégorie dont leur numéro se suivent ...
Genre de 1 à 10 les items de bouffe puis de 10 à 37 les items d armes puis de 37 à 40 les potions etc.
Mais comme j ai pas encore créé tous les items et que j ai aucune idée de combien d items je vais devoir créer...
Je sais pas comment m'y prendre...
Un conseil ? Avis ?
Merci
Je te conseil d'utiliser des scriptableObject pour gérer les items (rien à voir avec ta question, mais si tu connais pas les scriptableObject, je te recommande de te renseigner dessus).
Ce que tu vas devoir faire c'est stocker les objets qui peuvent être dans ton inventaire dans un tableau (ou une liste). Ainsi tu peux les ajouter au fur et à mesure du développement, et tu peux les ordonner. Grâce au tableau ou à la liste, tu peux récupérer l'index de chacun.
Je sais que tu as vu une vidéo pour faire un inventaire. Mais si tu ne connais pas Brackeys, je te le recommande. Il fait des vidéos cool sur YT (dont 2 sur les inventaires).
https://www.youtube.com/watch?v=w6_fetj9PIw
Merci, je vais opter je pense pour le scriptableObject...
En ce qui concerne Brackeys, je ne le connaissais pas, c'est vrai qu il parle très clairement et synthétiquement mais je ne parle pas très bien anglais, il va un peu trop vite pour moi...
J ai néanmoins vu son tuto et je pense composer avec tous les tutos que j ai vu...
Encore une fois, merci
Bonjour, du coup je me suis renseigné sur les Scriptable Object...
J'ai créé un inventaire avec des slots sans vraiment suivre de tutos mais plus en m'inspirant de la conception de différents tuto sur Internet...
Néanmoins je ne suis pas sûr de bien m'y être pris au niveau des Scriptables Objects...
1. Quand je regarde des assets correspondants aux items in game dans l inspector, j'ai la variable grisé Script qui m'affiche None (Mono Script)
2. De façon random, des fois, quand je regarde un asset dans l inspector, je ne vois que ce message "unity the associated script cannot be loaded scripteable object"
J ai du m y prendre mal quelque part ?
Merci
ScriptableObject c'est pour "stocker" des données. MonoBehavior c'est pour faire des actions.
Je pense que tu essaies de mettre un ScriptableObject à la place d'un Objet Monobehavior.
Regarde sur internet, je pense que beaucoup de monde a déjà eu ton problème, donc il y a des solutions.
https://answers.unity.com/questions/1385671/why-the-associated-script-can-not-be-loaded-for-so.html
Le 24 avril 2019 à 18:17:45 TheRealMarco a écrit :
ScriptableObject c'est pour "stocker" des données. MonoBehavior c'est pour faire des actions.Je pense que tu essaies de mettre un ScriptableObject à la place d'un Objet Monobehavior.
Regarde sur internet, je pense que beaucoup de monde a déjà eu ton problème, donc il y a des solutions.
https://answers.unity.com/questions/1385671/why-the-associated-script-can-not-be-loaded-for-so.html
Bon, j'essayais juste de stocker des données, mais je me suis renseigné et le problème est que j'avais mis plusieurs classes dans mon ScripteableObject pour différents types d'assets... C'est tout...
Merci en tout cas
Bonjour, je reviens ici, j'ai encore des problèmes avec les ScriptablesObject, quand elles étendent d'autres ScriptablesObjects .
Cette fois c'est plus concret...
Après avoir réussi à créer mon système d'inventaire assez rudimentaire (des slots et items pouvant être mis dedans ), je souhaite créer une fenêtre qui affiche les caractéristiques de chaque Items...
Rien de compliqué je créer un script qui modifie un Text et qui donne les caractéristiques de l'asset de donnée en question, le problème est celui-ci :
Je mets dans mon texte les caractéristiques de mon Item (variable name) trouvable dans le scriptableObject ItemData...
J veux ensuite mettre les caractéristiques de Food (variable food), trouvable dans un autre scriptableObject FoodData, hérité de ItemData...
Mon bout de code approximatif :
public ItemData Item ;
void ShowInfoItem() {
GetComponent<Text>().text = "Nom: " + Item.name ;
if(Item is FoodData){
GetComponent<Text>().text += "\n Nourriture: " + Item.food
}
}
Bien sur ça fonctionne pas, parce que food appartient à FoodData
Comment faire ? Sachant que je voudrais que mon script fonction pour n importe quel asset autre variable de n importe quelle autre scriptableObject hérité de ItemData...
Merci
Tu veux changer dynamiquement le type (cast).
(Item as FoodData).food
à la place de
Item.food
Ça devrait marcher.
Par contre, c'est pas propre niveau programmation. Les concepts de POO ne seront pas respectés. C'est les descendants d'Item qui devraient gérer ce genre de chose. Pas le composant qui gère l'affichage.
Le 28 avril 2019 à 13:25:55 TheRealMarco a écrit :
Tu veux changer dynamiquement le type (cast).(Item as FoodData).food
à la place de
Item.food
Ça devrait marcher.
Par contre, c'est pas propre niveau programmation. Les concepts de POO ne seront pas respectés. C'est les descendants d'Item qui devraient gérer ce genre de chose. Pas le composant qui gère l'affichage.
Merci ça fonctionne, du coup, si j'ai bien compris, pour respecter le concept de la POO, j dois donc mettre toutes les variables dans mon ItemData dans les autres scriptableObjects hérités ? Soit, la variable nom dans FoodData et les autres (que j ai pas encore créé) comme par exemple, PotionData ou WeaponData ?
Bonjour, encore des questions à poser ici
J veux créer un systeme de combat style jeu d'action dans mon jeu 2D...
Le jeu est comme une sorte de platformer...
Je voudrais pour créer un aspect stratégique pouvoir mettre sur différents plans le joueur et les ennemis...
Genre une maison, quand on saute dessus, on atterrit sur le toit (2eme plan)...
On peut pas mettre de boxcollider2d sur le toit sinon on peut pas sauter par dessus la maison...
Du coup j me suis dit un trigger qui détecte quand le joueur est au dessus du toit et qui active le collider...
Mais avec 2 persos ça ne sera pas faisable...
Je me penche donc sur les layers et les collisions... Mais ça risque de compliquer la suite de mon code...n y a t il pas d autres alternatifs ?
Le 30 avril 2019 à 11:59:59 ludoxe a écrit :
Bonjour, encore des questions à poser iciJ veux créer un systeme de combat style jeu d'action dans mon jeu 2D...
Le jeu est comme une sorte de platformer...Je voudrais pour créer un aspect stratégique pouvoir mettre sur différents plans le joueur et les ennemis...
Genre une maison, quand on saute dessus, on atterrit sur le toit (2eme plan)...
On peut pas mettre de boxcollider2d sur le toit sinon on peut pas sauter par dessus la maison...
Du coup j me suis dit un trigger qui détecte quand le joueur est au dessus du toit et qui active le collider...
Mais avec 2 persos ça ne sera pas faisable...Je me penche donc sur les layers et les collisions... Mais ça risque de compliquer la suite de mon code...n y a t il pas d autres alternatifs ?
Je sais pas comment on fait, mais je sais qu'il y a une manière simple de la mettre en oeuvre sur Unity.
Regarde sur internet.
https://www.google.fr/search?q=2D+one+side+collider+unity
Le 28 avril 2019 à 15:30:01 ludoxe a écrit :
Le 28 avril 2019 à 13:25:55 TheRealMarco a écrit :
Tu veux changer dynamiquement le type (cast).(Item as FoodData).food
à la place de
Item.food
Ça devrait marcher.
Par contre, c'est pas propre niveau programmation. Les concepts de POO ne seront pas respectés. C'est les descendants d'Item qui devraient gérer ce genre de chose. Pas le composant qui gère l'affichage.
Merci ça fonctionne, du coup, si j'ai bien compris, pour respecter le concept de la POO, j dois donc mettre toutes les variables dans mon ItemData dans les autres scriptableObjects hérités ? Soit, la variable nom dans FoodData et les autres (que j ai pas encore créé) comme par exemple, PotionData ou WeaponData ?
Y'a plusieurs moyens de le faire plus proprement. Je dirai que tu peux simplement faire une fonctiongetAllAttributes()
qui retourne un tableau de string. Cette fonction serait dans ton ItemData. Avec le modificateur override
les classes héritées pourront redéfinir le résultat de cette méthode (en réutilisant la base créée par ItemData si besoin avec base.getAllAttributes()
).
Ainsi, la méthode qui affiche le deviendra :void ShowInfoItem() {
GetComponent<Text>().text = ""; // vide au début
foreach(attribut in Item.GetAllAttributes()) {
GetComponent<Text>().text += attribut
}
}
Le 30 avril 2019 à 17:56:23 TheRealMarco a écrit :
Le 30 avril 2019 à 11:59:59 ludoxe a écrit :
Bonjour, encore des questions à poser iciJ veux créer un systeme de combat style jeu d'action dans mon jeu 2D...
Le jeu est comme une sorte de platformer...Je voudrais pour créer un aspect stratégique pouvoir mettre sur différents plans le joueur et les ennemis...
Genre une maison, quand on saute dessus, on atterrit sur le toit (2eme plan)...
On peut pas mettre de boxcollider2d sur le toit sinon on peut pas sauter par dessus la maison...
Du coup j me suis dit un trigger qui détecte quand le joueur est au dessus du toit et qui active le collider...
Mais avec 2 persos ça ne sera pas faisable...Je me penche donc sur les layers et les collisions... Mais ça risque de compliquer la suite de mon code...n y a t il pas d autres alternatifs ?
Je sais pas comment on fait, mais je sais qu'il y a une manière simple de la mettre en oeuvre sur Unity.
Regarde sur internet.
https://www.google.fr/search?q=2D+one+side+collider+unityLe 28 avril 2019 à 15:30:01 ludoxe a écrit :
Le 28 avril 2019 à 13:25:55 TheRealMarco a écrit :
Tu veux changer dynamiquement le type (cast).(Item as FoodData).food
à la place de
Item.food
Ça devrait marcher.
Par contre, c'est pas propre niveau programmation. Les concepts de POO ne seront pas respectés. C'est les descendants d'Item qui devraient gérer ce genre de chose. Pas le composant qui gère l'affichage.
Merci ça fonctionne, du coup, si j'ai bien compris, pour respecter le concept de la POO, j dois donc mettre toutes les variables dans mon ItemData dans les autres scriptableObjects hérités ? Soit, la variable nom dans FoodData et les autres (que j ai pas encore créé) comme par exemple, PotionData ou WeaponData ?
Y'a plusieurs moyens de le faire plus proprement. Je dirai que tu peux simplement faire une fonction
getAllAttributes()
qui retourne un tableau de string. Cette fonction serait dans ton ItemData. Avec le modificateuroverride
les classes héritées pourront redéfinir le résultat de cette méthode (en réutilisant la base créée par ItemData si besoin avecbase.getAllAttributes()
).Ainsi, la méthode qui affiche le deviendra :
void ShowInfoItem() { GetComponent<Text>().text = ""; // vide au début foreach(attribut in Item.GetAllAttributes()) { GetComponent<Text>().text += attribut } }
Ok merci pour tout
Bonjour a tous,
Dans le cadre de mon TFE, j'ai réalisé une maison en 3D sur AutoCad. Je l'exporte en FBX pour l'utiliser dans unity 3D.
Jusque la tout vas bien!
J'essaye d'appliquer une texture de brique sur un mur... J'obtiens un mur simplement brun.
J'ai essayer en créant un cube depuis unity et mettre la meme texture et la cela marche parfaitement.
Auriez vous une solution pour moi ?
Merci
Le 09 mai 2019 à 14:15:05 Maatth4 a écrit :
Bonjour a tous,Dans le cadre de mon TFE, j'ai réalisé une maison en 3D sur AutoCad. Je l'exporte en FBX pour l'utiliser dans unity 3D.
Jusque la tout vas bien!J'essaye d'appliquer une texture de brique sur un mur... J'obtiens un mur simplement brun.
J'ai essayer en créant un cube depuis unity et mettre la meme texture et la cela marche parfaitement.Auriez vous une solution pour moi ?
Merci
Ouais, si cest comme 3dsmax tu dois créer tes uvmap dans le logiciel avant d'exporter en FBX.
Salut,
j'ai une question à propos de la physique :
Si on veut pouvoir faire en sorte que 2 objets entrent en collision, on doit obligatoirement passer par AddForce si on veut déplacer l'objet par code ? Parce que visiblement, si je déplace l'objet via son transform sans lui appliquer de force, les collisions ne semblent pas se faire. Je fais une espèce de casse-briques et j'aimerais diriger la barre avec la souris tout en profitant des collisions a droite et a gauche pour empêcher la barre de sortir du cadre.
Merci.
Hello,
Question très rapide
Quelque'un sait pourquoi dans mon Visual Studio je n'ai pas toutes les mots clefs coloré comme on peut voir sur les tuto youtube :
De plus, je n'ai pas l'explication des fonctions comme c'est le cas dans cette video par ex : https://youtu.be/DL96YoqGhuc?t=176
Etant débutant, cela m'aiderait grandement.
Un peu d'aide svp les gars?
Regarde en haut a gauche, il est écrit "fichiers divers", ca veut dire qu'il y a un problème de lien entre unity et VS.
La solution est ici, en anglais, la première réponse à 168 like https://stackoverflow.com/questions/42597501/autocompletion-not-working-in-visual-studio
Le 08 juin 2019 à 22:44:09 ]sliman[ a écrit :
Salut,
j'ai une question à propos de la physique :
Si on veut pouvoir faire en sorte que 2 objets entrent en collision, on doit obligatoirement passer par AddForce si on veut déplacer l'objet par code ? Parce que visiblement, si je déplace l'objet via son transform sans lui appliquer de force, les collisions ne semblent pas se faire. Je fais une espèce de casse-briques et j'aimerais diriger la barre avec la souris tout en profitant des collisions a droite et a gauche pour empêcher la barre de sortir du cadre.
Merci.
Oui il faut utiliser une force si tu veux que ton objet rentre en collision avec un autre objet ayant un corps physique. Tu peux utiliser AddForce, ou alors tu modifies la variable "velocity" de ton Rigidbody en lui appliquant un vecteur.
Après pour un case brique, je doute de l'utilité d'utiliser le moteur physique pour déplacer la barre. Tu ne pourrais pas simplement faire avec le transform, et ne pas mettre de Rigidbody à ta barre ? D'expérience, si tu utilises le moteur physique pour faire ce type de manipulation, tu auras un résultat bizarre. Par exemple, si tu déplaces rapidement la barre vers une limite, elle va surement s'enfoncer un peu dans le décors...
Via ton script, tu interdis simplement à ta barre d'avoir une position en dehors des limites que tu as imposé. Ta barre est un sprite j'imagine, donc tu peux te servir de cette variable : https://docs.unity3d.com/ScriptReference/Sprite-bounds.html
Plus précisément : https://docs.unity3d.com/ScriptReference/Bounds-extents.html
Comme ca tu fais une condition pour ne pas déplacer ta barre vers la gauche quand sa position ET la moitié de sa taille sur l'axe x (c'est à dire on_sprite.bounds.extends.x) sont inférieurs à la limite gauche.
Presque idem pour le côté droit