bonjour a tous. Je suis entrain de faire un eu en vu Top/Down. J'ai un probleme avec un GetComponentInChildren qui ne fonctionne pas correctement.
J'ai un prefab "enemie" que j'ai dupliqué plusieurs fois sur un plan et j'ai un prefab "player" sur ce plan. J'aimerai que chaque enemie fasse un rayCast avec le player et si il n'y a rien entre on active le sprite renderer (le joueur vois l'enemie) et si la distance entre l'enemie et le joueur est inférieure a 2 l'enemie suit le joueur.
Probleme: la activation/désactivation du sprite renderer ne fonctionne pas et j'ai l'impression le raycastall ne fonctionne pas
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class Enemie : MonoBehaviour {
[SerializeField] GameObject Player;
NavMeshAgent enemy;
SpriteRenderer rendere;
// Use this for initialization
void Start () {
enemy = transform.GetComponent<NavMeshAgent>();
rendere = gameObject.GetComponentInChildren<SpriteRenderer>();
rendere.enabled = false;
}
// Update is called once per frame
void Update () {
float dist = Vector3.Distance(transform.position, Player.transform.position);
RaycastHit[] hits = Physics.RaycastAll(transform.position, Player.transform.position);//si il y a des objets entre l enemie et le joeur
if (hits.Length == 1)//si il n y a que le player
{
rendere.enabled = true;
if (dist < 2)
{
enemy.SetDestination(Player.transform.position);
}
}
else
{
rendere.enabled = false;
}
}
}
Ce serait bien d'avoir un peu plus de précisions, comme par exemple quel est le contenu de hits après raycastall. S'il est vide, c'est normal qu'il y ait un problème.
probleme unity
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.