- Home /
This question was
closed Jan 10, 2019 at 05:11 PM by
el-mas-pro-470 for the following reason:
DO-NOT-ANSWERED
Question by
el-mas-pro-470 · Jan 10, 2019 at 02:41 PM ·
raycastenemyraycastingenemy aienemyai
How to make a Raycast enemy?
Hi, I have created a script for an enemy but, it has a RADIAL view range, that is, if I am behind it it detects me the same, Supposedly it can be created with Raycast but I do not know, I searched but nothing, Someone knows some method? Thank you! Here is my script:
using UnityEngine;
using System.Collections;
public class Enemy : MonoBehaviour {
public Transform Target;
public Animator Animador;
public float Distancia = 30;
public float LastDistance = 50;
public float VisionAngle;
public bool Searching = false;
public float RotationDamping = 2;
public float moveSpeed = 5;
public Vector3 TargetPosition;
public NavMeshAgent EnemyNV;
private bool AgentActive = false;
public NavMeshAgent NavMeshAgentComp;
void Start()
{
Animador.SetBool("Aiming", false);
TargetPosition = Target.transform.position;
EnemyNV = GetComponent<NavMeshAgent>();
NavMeshAgentComp.enabled = false;
}
void Update()
{
var distance = Vector3.Distance(Target.position, transform.position);
if(distance <= Distancia)
{
LookAtTarget();
Animador.SetBool("Aiming", true);
Animador.SetBool("WalkingSearch", false);
Animador.SetBool("Idle", false);
}
if(distance > Distancia)
{
SearchTarget();
Animador.SetBool("Aiming", false);
Animador.SetBool("WalkingSearch", true);
Animador.SetBool("Idle", false);
Searching = true;
}
if(distance > LastDistance)
{
LastTarget();
}
}
void LookAtTarget()
{
var dir = Target.position - transform.position;
dir.y = 0;
var rotation = Quaternion.LookRotation(dir);
transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * RotationDamping);
NavMeshAgentComp.enabled = false;
}
void SearchTarget()
{
if(Searching == true)
{
Animador.SetBool("WalkingSearch", true);
NavMeshAgentComp.enabled = true;
EnemyNV.destination = Target.position;
}
}
void LastTarget()
{
if(Searching == true)
{
Searching = false;
Animador.SetBool("Aiming", false);
Animador.SetBool("WalkingSearch", false);
Animador.SetBool("Idle", true);
NavMeshAgentComp.enabled = false;
}
}
}
Comment
Follow this Question
Related Questions
enemy raycast to detect player 1 Answer
Enemy raycast detection 0 Answers
Enemy AI using raycasting.. **Solved** 2 Answers
how do i make enemy ai chase player 0 Answers
Enemy not jumping using Raycast 1 Answer