Пятница, 29 Марта 2024, 13:13

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » List Targets (фигня)
List Targets
allodsДата: Пятница, 19 Апреля 2013, 22:26 | Сообщение # 1
почти ветеран
Сейчас нет на сайте
Всем привет

Вот имеется код

Код
    import System.Collections.Generic;
           
       var targets : List.<Transform>;
       var selectedTarget : Transform;
           
       function Start () {
           targets = new List.<Transform>();
           selectedTarget = null;
           AddAllEnemies();
       }
           
       function AddAllEnemies()
       {
           var go : GameObject[] = GameObject.FindGameObjectsWithTag("2");
           for(var enemy : GameObject in go)
           {
               AddTarget(enemy.transform);
           }
       }
           
       function AddTarget(enemy : Transform)
       {
           targets.Add(enemy);
       }        
       function SortByDistance()
       {
          var targets =  new Array();
           targets.Sort(Comparison);
       }
function Comparison(a : GameObject, b : GameObject)
{
var a_dist = Vector3.Distance(transform.position, a.transform.position);
var b_dist = Vector3.Distance(transform.position, b.transform.position);
return a_dist.CompareTo(b_dist);
}    
           
       function Update () {
            selectedTarget = targets[0];
       }
          
       


Добавляет врагов в Таргеты но не фига не распределяет по расстоянию от цели, кто добрый дядя подскажет


Сообщение отредактировал allods - Пятница, 19 Апреля 2013, 22:28
seamanДата: Пятница, 19 Апреля 2013, 22:59 | Сообщение # 2
старожил
Сейчас нет на сайте
А где Вы вообще вызываете функцию сортировки SortByDistance?
allodsДата: Суббота, 20 Апреля 2013, 00:05 | Сообщение # 3
почти ветеран
Сейчас нет на сайте
Да я ее не вызвал
Засунул в Update но ничего не меняется
seamanДата: Суббота, 20 Апреля 2013, 00:31 | Сообщение # 4
старожил
Сейчас нет на сайте
Ну естественно. А что должно меняться? Вы видите что Вы вообще сортируете то? Некий пустой Array targets созданный прямо в функции SortByDistance. А Вам какой надо сортировать? Тот который объявлен вне функций! Вопрос - а нафига вы вообще в SortByDistance новый массив то создаете?
ЗЫ: если исправите - обратите внимание, что сортировать массив каждый кадр - это глупо. Сортировать его нужно когда он меняется. В данном случае можно в Start после AddAllEnemies. Ну а в более общем случае в AddTarget
allodsДата: Суббота, 20 Апреля 2013, 00:50 | Сообщение # 5
почти ветеран
Сейчас нет на сайте
После того как запихнул его в AddTarget я незнаю что тут делать

var targets : List.<Transform>; или var targets = new Array();?
как тут мне разобратся?

Если убрать var targets = new Array(); то юнити ругается
No appropriate version of 'System.Collections.Generic.List.Sort' for the argument list '(function(UnityEngine.GameObject, UnityEngine.GameObject): int)' was found.
Я не пойму что мне надо поменять
seamanДата: Суббота, 20 Апреля 2013, 01:14 | Сообщение # 6
старожил
Сейчас нет на сайте
1. Убрать var targets = new Array();
2. targets.Sort(Comparison); заменить на ту, которая есть в List
Не знаю JS. Потому не могу написать рабочий вариант на нем. На шарпе нечто
Код
using UnityEngine;

public class Temp : MonoBehaviour
{
    public int Compare(Transform x, Transform y)
    {
        float a_dist = Vector3.Distance(transform.position, x.position);
        float b_dist = Vector3.Distance(transform.position, y.position);
        return a_dist.CompareTo(b_dist);  
    }

    List<Transform> targets;
    Transform selectedTarget;  

    void Start()
    {
       targets = new List<Transform>();
       selectedTarget = null;
       AddAllEnemies();  
       targets.Sort(Compare);
    }
    //Остальное как у Вас
}
allodsДата: Суббота, 20 Апреля 2013, 02:18 | Сообщение # 7
почти ветеран
Сейчас нет на сайте
Я не нашел на какую заменить targets.Sort(Comparison); Что с этой не так =(

Добавлено (20.04.2013, 02:18)
---------------------------------------------
Я переделал в С# все работает спасибо большое Seaman

Форум игроделов » Движки для разработки игр и сложные системы разработки » Unity » List Targets (фигня)
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг