forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Самонаводящийся патрон (http://forum.boolean.name/showthread.php?t=19930)

Ivan2009 04.08.2015 17:03

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

PHP код:

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); 
   } 
  } 



Andvrok 04.08.2015 17:11

Ответ: Самонаводящийся патрон
 
thisTransform.LookAt(target);

pax 04.08.2015 17:32

Ответ: Самонаводящийся патрон
 
Была вот такая тема: http://forum.boolean.name/showthread.php?t=13339 может пригодится

Ivan2009 04.08.2015 18:21

Ответ: Самонаводящийся патрон
 
Цитата:

Сообщение от pax (Сообщение 298183)
Была вот такая тема: http://forum.boolean.name/showthread.php?t=13339 может пригодится

я от туда и черпал про самонаведение :)
Цитата:

Сообщение от Andvrok (Сообщение 298182)
thisTransform.LookAt(target);

у меня расчет направления уже есть direction

Ivan2009 04.08.2015 18:25

Ответ: Самонаводящийся патрон
 
Разобрался в чем проблема.
Не срабатывало условие
PHP код:

void Update () { 
   if (
target null) { 
    
currentTarget findTargets(); 
    
target currentTarget.transform
   } 

всему виной моя не внимательность...

Tormaz 14.09.2015 20:26

Ответ: Самонаводящийся патрон
 
Твоя ошибка в том , что патрон состоит из пули и гильзы ! А у тебя летит весь патрон!


Часовой пояс GMT +4, время: 11:36.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot