[Script Debutant] - Problème de collider 2D

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
sjboejeu
Messages : 1
Inscription : 30 Juil 2018 18:30

[Script Debutant] - Problème de collider 2D

Message par sjboejeu » 30 Juil 2018 18:40

Bonjour

Je m'appelle Alexandre et j'essaie de faire un petit jeu avec des pièces qui tombent sur un terrain mais parfois j'ai des pièces qui tombent à coté et je ne comprends pas où est mon problème

Image
Image

Ci dessous mon script :

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeclencheurObjetCache : MonoBehaviour {

      GameObject My3DPiece;

        void OnCollisionEnter2D ( Collision2D coll )
        {

                //Si le tag du gameObject du collider touché est égale à "Player"
                if ( coll.gameObject.name == "Respawn" )
                {	
                        Destroy(gameObject);
                        My3DPiece = GameObject.FindWithTag("Piece3D");
			//Instantiate(My3DPiece, new Vector3(3.61f, 7.29f + (2.0F + Random.Range(0.2f, 1f)),0.118f), Quaternion.identity);
                        Instantiate(My3DPiece, new Vector3(3.61f, 7.29f, -0.118f), Quaternion.identity);
                }
        }
}
Merci de votre aide !

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6186
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [Script Debutant] - Problème de collider 2D

Message par boubouk50 » 31 Juil 2018 09:02

Salut Alexandre,

Je ne suis pas bien sûr de savoir d'où vient le problème, par contre, ton script nécessite quelques réarrangements, qui pourrait avoir un impact. Notamment le fait que tu ailles instancier la première pièce que tu trouves (FindWithTag ()) . Tu devrais plutôt instancier le prefab de cette pièce.
Ensuite sur quels objets est associé ce script, sur les pièces? Dans ce cas, tu peux simplement réinitialiser la pièce. Ou peut-être sur SpawnPieces? dans ce cas:

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DeclencheurObjetCache : MonoBehaviour {
	//Déclaration des variables
	//Tu peux ici glisser déposer le prefab de la pièce
	public GameObject My3DPiece;

        void OnCollisionEnter2D ( Collision2D coll )
        {
                //Si le tag du gameObject du collider touché est égale à "Player"
                if ( coll.gameObject.name == "Respawn" )
                {	
                        Instantiate(My3DPiece, new Vector3(3.61f, 7.29f, -0.118f), Quaternion.identity);
                        Destroy(gameObject);
                }
        }
}
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
Liven
Messages : 268
Inscription : 30 Nov 2017 01:48

Re: [Script Debutant] - Problème de collider 2D

Message par Liven » 31 Juil 2018 14:29

Pour ton problème de collision, je me demande si c'est pas ton rigidbody qui aurai besoin d'un petit réglage. Du genre passer la "collision dectection" en "continuous"

Sinon d'un point de vu opti, le fait d'instancier des objet fait partie des opérations gourmandes. Lorsque l'on en a beaucoup à faire régulièrement (typiquement tous ce qui est projectiles si on utilise pas de syst part), il vaut mieux passer par un "pool d'objet" : on stock une certaine quantité d'objet désactivés dans un tableau et on appel un objet dans le tableau quand on en a besoin en l'activant et le mettant à la bonne place, (éventuellement en initialisant les variable de ses scripts s'il en a) et on le désactive simplement lorsqu'il est censé être détruit.

Répondre

Revenir vers « (C#) CSharp »