Здавствуйте.такая вот проблемка делал самонаводящий патрон, в идеале должен патрон спавнится и лететь к цели, но патрон летит куда то в сторону.Подскажите где моя ошибка?
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
public class NewShootPlayer : MonoBehaviour {
private GameObject currentTarget;
private Transform target;//цель для патрона
public float speed = 10;// скорость патрона
public float turnSpeed = 100; //скорость поворота патрона
public float timeLive = 5;//время жизни патрона
private Transform thisTransform;// трансформ персонажа
public void Awake(){
thisTransform = transform;
}
// Update is called once per frame
void Update () {
if (target = null) {
currentTarget = findTargets();
target = currentTarget.transform;
}
//timeLive -= Time.deltaTime;
Vector3 movement = thisTransform.forward * speed * Time.deltaTime;//величина движения вперед
if (target != null) {
Vector3 direction = target.position - thisTransform.position;//направление на цель
float maxAngle = turnSpeed*Time.deltaTime;//максимальный угол поворота в текущий кадр
float angle = Vector3.Angle(thisTransform.forward,direction);//
if(angle<=maxAngle){
thisTransform.forward = direction.normalized;// если угол меньше максимального, поворачиваем на цель
}else{
thisTransform.forward = Vector3.Slerp(thisTransform.forward, direction.normalized,maxAngle/angle);
}
//float distanceToTarget = direction.magnitude;
}
thisTransform.position += movement;//двигаем ракету вперед
}
public GameObject findTargets(){
float closestMobDistance = 0;//переменная для проверки дистанции до моба
GameObject nearestMob = null;//переменная для ближайшего моба
List<GameObject> allMobs = GameObject.FindGameObjectsWithTag ("Mob").ToList ();//ищу мобов по тагу и добавляю в список
foreach (GameObject mob in allMobs) {//перебираю мобов
if((Vector3.Distance(mob.transform.position, transform.position)<
closestMobDistance) || closestMobDistance == 0){
closestMobDistance = Vector3.Distance(mob.transform.position, thisTransform.position);//меряю дистанцию и записую в переменную
nearestMob = mob;//устанавливаю как ближайшую
}
}
//Debug.Log(" Ближайший моб----> " + nearestMob);
return nearestMob;//возвращаю ближайшего моба
}
void OnCollisionEnter(Collision myCollision){
MyBehavior collisionBehavior = myCollision.gameObject.GetComponent<MyBehavior> ();
if (collisionBehavior) {
collisionBehavior.SetDamage(30);
Debug.Log("Нанес 30 урона");
Destroy(gameObject);
}
}
}