Показать сообщение отдельно
Старый 04.08.2015, 17:03   #1
Ivan2009
AnyKey`щик
 
Регистрация: 04.08.2015
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Самонаводящийся патрон

Здавствуйте.такая вот проблемка делал самонаводящий патрон, в идеале должен патрон спавнится и лететь к цели, но патрон летит куда то в сторону.Подскажите где моя ошибка?

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.forwarddirection.normalized,maxAngle/angle); 
    } 
    
//float distanceToTarget = direction.magnitude; 
   

   
thisTransform.position += movement;//двигаем ракету вперед 
  

  public 
GameObject findTargets(){ 
   
float closestMobDistance 0;//переменная для проверки дистанции до моба 
   
GameObject nearestMob null;//переменная для ближайшего моба 
   
List<GameObjectallMobs GameObject.FindGameObjectsWithTag ("Mob").ToList ();//ищу мобов по тагу и добавляю в список 
   
foreach (GameObject mob in allMobs) {//перебираю мобов 
    
if((Vector3.Distance(mob.transform.positiontransform.position)< 
        
closestMobDistance) || closestMobDistance == 0){ 
     
closestMobDistance Vector3.Distance(mob.transform.positionthisTransform.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); 
   } 
  } 

(Offline)
 
Ответить с цитированием