Comment detecter si un objet est crée sur un autre
Publié : 14 Sep 2021 16:45
Bonjour,
je suis débutant avec unity et je connais donc assez peu de fonctionnalité possible, donc surtout n'hesitez pas à me proposer des trucs qui peuvent vous parraitre évident xD
Voici mon problème, je suis actuellement en train de faire un jeu où il y a beaucup de nouveaux objets généré pendant le jeux, je les créer tous avec 'instantiate' et ensuite je modifie 'transorm.position' pour les placer à l'endroit que je veux.
Bon déja rien que pour ca, pensez-vous à d'autre moyen pour créer les objets ou les positionners?
Et sinon, ce que j'aimerais pouvoir faire c'est ajouter une sécurité, j'aimerais que si je modifie la position d'un objet et que cela le fait arriver sur un autre objet déja existant, je puisse détruire l'objet qui vient d'arriver. Typiquement, je pourrais vouloir placer un pot de fleur à un endroit, mais il y a en a peut-etre déja un et ca posera des problemes si il est crée à cet endroit, donc je veux pouvoir le détruire avant de le placer, ou immédiatement après.
La solution que j'ai essayer de mettre en place pour contourner le probleme, est de mettre un box collider 'triggerable' à l'intérieur de mon objet, de cette manière il detecte avec 'OnTriggerEnter' si un objet est placé par dessus, et pour éviter qu'il ne se détecte lui même avec le box colider de l'objet dans lequel il est, je remonte un peu pour différencier les 'gameObject', j'ai également ajouté une distinction avec les tags pour éviter les problèmes avec le décors.
Cela reste problématique, parceque comme tout les pots de fleur en posséderont un, les deux s'activeront si les deux pots de fleurs sont superposé, et c'est plutot embetant. Et je ne peux donc pas faire une action spécifique sinon elle se fera en double, et je suis incapable de différencier les deux évenements.
Par exemple, j'aimerais pouvoir détruire l'objet qui est sensé etre crée sur l'objet existant, mais en mettant un destroy il se détruirons mutuellement. Bref, je sais pas faire xD
De mon point de vue, il y a trois manière de resoudre mon problème, admettons qu'il y a un objet A à un endroit et que je veuille créer un objet B à ce même endroit :
- arriver à detecter si il y a déja un objet à l'endroit où je veux placer B et ensuite décider si je crée B ou pas
- ou créer B et le placer, ensuite faire ensorte que B detecte si il est placé sur quelqu'un et si oui le faire s'autodétruire
- ou créer B et le placer, ensuite faire en sorte que A detecte si on lui à crée un objet dessus, et si oui détruire l'objet en question.
Avez-vous des idées pour en réaliser une des trois? Ou sinon, connaissez-vous des moyens diférents de faire ce que je veux, sans utiliser 'instantiate' par exemple?
Merci d'avance pour l'aide que vous pourrez m'apporter ^^
je suis débutant avec unity et je connais donc assez peu de fonctionnalité possible, donc surtout n'hesitez pas à me proposer des trucs qui peuvent vous parraitre évident xD
Voici mon problème, je suis actuellement en train de faire un jeu où il y a beaucup de nouveaux objets généré pendant le jeux, je les créer tous avec 'instantiate' et ensuite je modifie 'transorm.position' pour les placer à l'endroit que je veux.
Bon déja rien que pour ca, pensez-vous à d'autre moyen pour créer les objets ou les positionners?
Et sinon, ce que j'aimerais pouvoir faire c'est ajouter une sécurité, j'aimerais que si je modifie la position d'un objet et que cela le fait arriver sur un autre objet déja existant, je puisse détruire l'objet qui vient d'arriver. Typiquement, je pourrais vouloir placer un pot de fleur à un endroit, mais il y a en a peut-etre déja un et ca posera des problemes si il est crée à cet endroit, donc je veux pouvoir le détruire avant de le placer, ou immédiatement après.
La solution que j'ai essayer de mettre en place pour contourner le probleme, est de mettre un box collider 'triggerable' à l'intérieur de mon objet, de cette manière il detecte avec 'OnTriggerEnter' si un objet est placé par dessus, et pour éviter qu'il ne se détecte lui même avec le box colider de l'objet dans lequel il est, je remonte un peu pour différencier les 'gameObject', j'ai également ajouté une distinction avec les tags pour éviter les problèmes avec le décors.
Cela reste problématique, parceque comme tout les pots de fleur en posséderont un, les deux s'activeront si les deux pots de fleurs sont superposé, et c'est plutot embetant. Et je ne peux donc pas faire une action spécifique sinon elle se fera en double, et je suis incapable de différencier les deux évenements.
Par exemple, j'aimerais pouvoir détruire l'objet qui est sensé etre crée sur l'objet existant, mais en mettant un destroy il se détruirons mutuellement. Bref, je sais pas faire xD
De mon point de vue, il y a trois manière de resoudre mon problème, admettons qu'il y a un objet A à un endroit et que je veuille créer un objet B à ce même endroit :
- arriver à detecter si il y a déja un objet à l'endroit où je veux placer B et ensuite décider si je crée B ou pas
- ou créer B et le placer, ensuite faire ensorte que B detecte si il est placé sur quelqu'un et si oui le faire s'autodétruire
- ou créer B et le placer, ensuite faire en sorte que A detecte si on lui à crée un objet dessus, et si oui détruire l'objet en question.
Avez-vous des idées pour en réaliser une des trois? Ou sinon, connaissez-vous des moyens diférents de faire ce que je veux, sans utiliser 'instantiate' par exemple?
Merci d'avance pour l'aide que vous pourrez m'apporter ^^