Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   www.boolean.name > Программирование игр для компьютеров > Unity > Общие вопросы

Общие вопросы вопросы не попадающие ни в один из доступных разделов

Ответ
 
Опции темы
Старый 04.08.2015, 14: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)
 
Ответить с цитированием
Старый 04.08.2015, 14:11   #2
Andvrok
Бывалый
 
Регистрация: 26.07.2009
Сообщений: 744
Написано 341 полезных сообщений
(для 950 пользователей)
Ответ: Самонаводящийся патрон

thisTransform.LookAt(target);
(Offline)
 
Ответить с цитированием
Старый 04.08.2015, 14:32   #3
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,496
Написано 2,953 полезных сообщений
(для 5,217 пользователей)
Ответ: Самонаводящийся патрон

Была вот такая тема: http://forum.boolean.name/showthread.php?t=13339 может пригодится
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 04.08.2015, 15:21   #4
Ivan2009
AnyKey`щик
 
Регистрация: 04.08.2015
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Самонаводящийся патрон

Сообщение от pax Посмотреть сообщение
Была вот такая тема: http://forum.boolean.name/showthread.php?t=13339 может пригодится
я от туда и черпал про самонаведение
Сообщение от Andvrok Посмотреть сообщение
thisTransform.LookAt(target);
у меня расчет направления уже есть direction
(Offline)
 
Ответить с цитированием
Старый 04.08.2015, 15:25   #5
Ivan2009
AnyKey`щик
 
Регистрация: 04.08.2015
Сообщений: 3
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: Самонаводящийся патрон

Разобрался в чем проблема.
Не срабатывало условие
void Update () { 
   if (
target null) { 
    
currentTarget findTargets(); 
    
target currentTarget.transform
   } 
всему виной моя не внимательность...
(Offline)
 
Ответить с цитированием
Старый 14.09.2015, 17:26   #6
Tormaz
Нуждающийся
 
Регистрация: 23.10.2009
Сообщений: 74
Написано 9 полезных сообщений
(для 22 пользователей)
Ответ: Самонаводящийся патрон

Твоя ошибка в том , что патрон состоит из пули и гильзы ! А у тебя летит весь патрон!
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +1, время: 19:56.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com