Всем привет
Недавно я написал своего умного бота. Он по идеи должен проверять есть ли препядтсвия между ним и игроком, ну он конешно проверяет, но не видит игрока, и следовательно не идет к нему и не стреляет. Помогите подправить скрипт или подскажите другой метод.
Код
//bot's options
#pragma strict
var Damage:float;
var Player:Transform;
var BotsEyes:Transform;
var agent:NavMeshAgent;
var Player0 : GameObject;
var range:float;
var health:float;
var Relax:float;
private var Delay = true;
var sound:AudioClip[];
var PotrolPoints:Transform[];
var AC: Animator;
private var IseePlayer = false;
private var IamAttackingPlayer = false;
private var IamGoingToPlayer = false;
function Start()
{
if ( Player==null)
{
Player = transform.Find("Player");
Player0 = GameObject.Find("Player");
}
}
function Update()
{
if ( health >= 1 && Player!=null)
{
var direction = Player.position;
var hit : RaycastHit;
if (Physics.Raycast (BotsEyes.position, direction, hit, 1000))
{
if(hit.collider.gameObject.CompareTag("Player"))
{
IseePlayer = true;
}
if (hit.collider.gameObject.CompareTag("Untagged"))
{
IseePlayer=false;
Potrolling();
agent.speed = 0;
}
}
if (IseePlayer)
{
agent.speed = 4;
agent.SetDestination(Player.transform.position);
IamGoingToPlayer=true;
Attack();
}
}
if(health <=0)
{
Destroy(gameObject);
}
}
function Potrolling()
{
}
function Attack()
{
var dist: float = Vector3.Distance(Player.position,transform.position);
if (dist <= range && Relax == true && IseePlayer)
{
Player0.SendMessage("ApplyDamage",Damage);
audio.clip = sound[Random.Range(0, GeneralSound.length)];
audio.volume = 1;
audio.Play();
//AC.Play("Attack");// это так например
Delay=false;
Wait();
}
}
function Wait()
{
yield WaitForSeconds(Relax);
Delay=true;
}
function ApplyDamage ( damage : float )
{
health -= damage;
Debug.Log("да ты попал");
}
Теперь ты можешь удалить скрипт bot's walking