assistants Bonjour de l'internet,unité 3d C# ennemi marche à travers les murs
Je fais une première personne en 3D RPG où vous pouvez attaquer les ennemis qui se trouvent sur la carte. Mon script actuel fonctionne bien, mais il y a un problème: les ennemis traversent les murs à chaque fois qu'ils se concentrent sur le joueur.
J'ai déjà essayé quelques solutions pour résoudre ce problème, mais malheureusement, il n'y a eu aucun résultat. Est-ce que quelqu'un sait une solution à ce problème?
Merci d'avance.
goblinAttack.cs:
using UnityEngine;
using System.Collections;
public class goblinAttack : MonoBehaviour {
public Transform player;
static Animator anim;
// Use this for initialization
void Start()
{
anim = GetComponent<Animator>();
}
// Update is called once per frame
void Update()
{
Vector3 direction = player.position - this.transform.position;
float angle = Vector3.Angle(direction,this.transform.forward);
if(Vector3.Distance(player.position, this.transform.position) < 10 && angle < 30)
{
direction.y = 0;
this.transform.rotation = Quaternion.Slerp(this.transform.rotation,
Quaternion.LookRotation(direction), 0.1f);
anim.SetBool("isIdle",false);
if(direction.magnitude > 5)
{
this.transform.Translate(0,0,0.10f);
anim.SetBool("isRunning",true);
anim.SetBool("isAttacking",false);
anim.SetBool("isCrying",true);
}
else
{
anim.SetBool("isAttacking",true);
anim.SetBool("isRunning",false);
anim.SetBool("isCrying",false);
}
}
else
{
anim.SetBool("isIdle", true);
anim.SetBool("isRunning", false);
anim.SetBool("isAttacking", false);
anim.SetBool("isCrying",false);
}
}
}
paramètres NPC:
Avez-vous un collisionneur de maille sur vos objets de mur? –
Vous aurez besoin d'effectuer un certain chemin d'accès pour trouver le chemin légal vers le joueur. Dans le cas contraire, le gobelin essaiera de courir directement sur le joueur, ce qui signifiera soit d'être arrêté ou de courir à travers des obstacles potentiellement facilement contournables. – Abion47
Oui, je le fais. Mais il se déplace toujours à travers le mur. –