if(Physics.Raycast(transform.position, fwd, hit, layerMask))
{
if(hit.transform == target)
{
barrelFire.renderer.enabled = true;
}
else
{
barrelFire.renderer.enabled = false;
}
}
var target : Transform;
var range = 2.0;
var gunSpeed = 1.2;
var barrelFire : GameObject;//частицы, огонь из ствола
function Awake()
{
if(!target)
{
target = FindClosestEnemy().transform;
}
barrelFire.renderer.enabled = false;
}
function FindClosestEnemy()
{
var gos : GameObject[];
gos = GameObject.FindGameObjectsWithTag("enemy");
var closest : GameObject;
var distance = Mathf.Infinity;
var position = transform.position;
for(var go : GameObject in gos)
{
var diff = (go.transform.position - position);
var curDistance = diff.sqrMagnitude;
if(curDistance < distance)
{
closest = go;
distance = curDistance;
}
}
return closest;
}
function Update ()
{
if (target && CanAttackTarget())
{
var targetRotation = Quaternion.LookRotation(target.position - transform.position, Vector3.up);
transform.rotation = Quaternion.Slerp(transform.rotation, targetRotation, Time.deltaTime * gunSpeed);
//Это расчет угла до цели. Вобщем-то не нужен.
/*var forward = transform.forward;
var targetDir = target.position - transform.position;
var angle = Vector3.Angle(targetDir, forward);
if(angle < 10.0)
{
barrelFire.renderer.enabled = true;
}
else
{
}*/
}
else
{
barrelFire.renderer.enabled = false;
}
}
function CanAttackTarget()
{
if(transform.parent.animation.isPlaying)
{
return false;
}
if(Vector3.Distance(transform.position, target.position) > range)
{
barrelFire.renderer.enabled = false;
target = FindClosestEnemy().transform;
return false;
}
var hit : RaycastHit;
var fwd = transform.TransformDirection (Vector3.forward);
var layerMask = 1 << 8;
Debug.DrawRay(transform.position, target.position - transform.position);
Debug.DrawRay(transform.position, fwd, Color.green);
if(Physics.Raycast(transform.position, fwd, hit, layerMask))
{
if(hit.transform == target)
{
barrelFire.renderer.enabled = true;
}
else
{
barrelFire.renderer.enabled = false;
}
}
else
{
barrelFire.renderer.enabled = false;
}
return true;
}
crocodile писал(а):Что интересно, есть анимация ствола. Поделил анимацию в инспекторе. Ствол состоит из 3х объектов. Т.е. группа. Нацепил на нее Animation, присвоил анимацию. Но заставить ее играть не получается. Ни ошибок, ни чего. Просто не играет.
В чем может быть дело?
Сейчас этот форум просматривают: Yandex [Bot] и гости: 8