Page 1 sur 1

[DB-AL] Problème ennemie (résolu discord)

Publié : 04 Juin 2020 15:10
par sachadors
Bonjour tous le monde, je suis bloqué depuis quelques jours sur un problème. Je suis débutant et mon code est plutôt complexe (j'ai prit la base d'un asset gratuit: easy fps que je modifie complétement). Donc voila, lorsque je tire une balle sur un ennemie. C'est le dernier qui a spawn via un script avec Instantiate qui perd la vie.. Cela doit être un problème de référencement mais j'arrive pas du tout à le résoudre. Il faudrait que la vie descende sur l'ennemie touché et non sur le dernier ennemie qui a spawn. Merci encore. Je met a disposition les scripts:

1.Script de la balle qui spawn:

Code : Tout sélectionner

      public float maxDistance = 1000000;
	RaycastHit hit;
	public GameObject decalHitWall;
	public float floatInfrontOfWall;
	public GameObject bloodEffect; /*pour effet de sang*/
	public LayerMask ignoreLayer;

	private GameObject corps;
	private GameObject tete;

	void Start()
    {
		corps = GameObject.FindGameObjectWithTag("Dummie"); /*Tag présent sur l'ennemie*/
		tete = GameObject.FindGameObjectWithTag("Tete");  /*Tag présent sur la tete de l'ennemie pour tirer dans la      tete*/
	}

	void Update() {

		if (Physics.Raycast(transform.position, transform.forward, out hit, maxDistance, ~ignoreLayer)) {
			if (decalHitWall) {
				if (hit.transform.tag == "LevelPart") {
					Instantiate(decalHitWall, hit.point + hit.normal * floatInfrontOfWall, Quaternion.LookRotation(hit.normal));
					Destroy(gameObject);
				}
				if (hit.transform.tag == "Dummie") {
					Instantiate(bloodEffect, hit.point, Quaternion.LookRotation(hit.normal));
					[highlight=yellow]perteVieCorps(50);[/highlight]
					Destroy(gameObject);
				}
				if (hit.transform.tag == "Tete"){
					Instantiate(bloodEffect, hit.point, Quaternion.LookRotation(hit.normal));
					[highlight=yellow]perteVieCorps(100);[/highlight]
					Destroy(gameObject);
				}
			}
			Destroy(gameObject);
		}
		[highlight=yellow]void perteVieCorps (int parametre){
			corps.GetComponent<zombieAI>().vie -= parametre;[/highlight]
		}

		Destroy(gameObject, 0.1f); /*detruit la balle*/
	}	
}


2.le script de l'ennemie:

Code : Tout sélectionner

 
   [b] public int vie = 100;[/b]
    NavMeshAgent nm; 
    private Transform player;

    private Animator animator;
    public Rigidbody[] ragdollRigibodies;

    void Start()
    {
        player = GameObject.FindGameObjectWithTag("Player").transform;

        nm = GetComponent<NavMeshAgent>();
        animator = GetComponentInChildren<Animator>();
        ragdollRigibodies = GetComponentsInChildren<Rigidbody>();
        foreach (Rigidbody rb in ragdollRigibodies)
        {
            rb.isKinematic = true;
        }
    }
    void Update()
    {
        nm.SetDestination(player.position); /*pour que l'ennemie se dirige vers le joueur*/

      [b] if (vie <= 0) //
        {
            animator.enabled = false;
            Dead();
        }

        void Dead() {
            foreach (Rigidbody rb in ragdollRigibodies) 
            {
                rb.isKinematic = false;  /*ennemie devient moue*/
            }
            Destroy(gameObject, 15); /*destruction de l'ennemie qui se trouve par terre*/
        }[/b]


Merci encore, n’hésiter pas de me poser des questions. :-D

Re: [DB-AL] Problème ennemie

Publié : 04 Juin 2020 18:01
par djulio74
Salut.
Avoir comme cela, c'est dans ton premier script le soucis. Tu défini tête et corps avec une recherche par tag. Hors cela te retourne le dernier créé avec ce tag.

Tu devrais créer une variable Transform ennemiTouche dans ton script et l'assigner quand le raycast touche quelque chose.
EnemiTouche = hit. Transform.

Et ensuite dans ta void PertvieCorps, remplacer corps par EnemiTouche.

Je suis sur le tel donc pas facile pour te faire un vrai bout de code.
Essai ma solution et si vraiment tu n'y arrive pas redemande et dans la soirée je te ferais le script ( sauf si quelqu'un d'autre a compris et veux bien te montrer)

Re: [DB-AL] Problème ennemie

Publié : 04 Juin 2020 18:50
par boubouk50
djulio74 a écrit :
04 Juin 2020 18:01
Essai ma solution et si vraiment tu n'y arrive pas redemande et dans la soirée je te ferais le script ( sauf si quelqu'un d'autre a compris et veux bien te montrer)
Je suis avec lui sur le discord, il a bien avancé déjà. Je vais lui demander de poster une MàJ de son avancement.

Re: [DB-AL] Problème ennemie (résolu discord)

Publié : 05 Juin 2020 18:04
par Max
Bonsoir,

@Sachadors: poster ici la solution aurait été sympa :triste1: