JavaScript Unity - need little brain help

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

JavaScript Unity - need little brain help

Сообщение Alwind 09 июл 2011, 17:50

Синтаксис:
Используется javascript
public var speed = 2.5;
public var shield: int = 5;
public var defense: int = 50;
public var hp: int = 3;
public var accuracy: int = 50;

private var flag = 2;
private var f = 0;

private var gop;
private var go;
private var qq : GameObject[];
qq = GameObject.FindGameObjectsWithTag("Planet");
gop = GameObject.Find("GameObject");

function FindClosestEnemy () : GameObject {
    // Find all game objects with tag Enemy
    var gos1 : GameObject[];
    gos1 = GameObject.FindGameObjectsWithTag("Planet");
    var closest : GameObject;
    var distance = 200;
    var position = transform.position;
    // Iterate through them and find the closest one
    for (var go1 : GameObject in gos1)  {
        var diff = (go1.transform.position - position);
        var curDistance = diff.sqrMagnitude;
        if (curDistance < distance) {
            closest = go1;
            distance = curDistance;
        }
    }
    return closest;    
}


function Update()
{

//if (go == null) {go =GameObject.Find("Asteroid");}
   
if (flag == 2)  {
        if (f==0)  {
                 go=FindClosestEnemy(); f=1;
        }


//----------------------KOCYAK-------------------------------------------------
transform.LookAt(Vector3(go.transform.position.x,go.transform.position.y,go.transform.position.z)); print(go.name);
//NullReferenceException: Object reference not set to an instance of an object


        transform.Translate(Vector3.forward * speed* Time.deltaTime);
        if (Vector3.Distance(transform.position,go.transform.position) < 1)
        { flag=2; f=0; }
}


if (Vector3.Distance(transform.position,Vector3(0,0,0)) < 3)
    {
                if (flag!=3) {oldFlag=flag; flag=3;}
        };
       
        if (flag==3) {
                transform.RotateAround (Vector3.zero, Vector3.up, 8*speed * Time.deltaTime);
                transform.Translate(transform.position * 0.1*speed* Time.deltaTime);
                if(Vector3.Distance(transform.position,Vector3(0,0,0)) > 5) {flag = oldFlag;}
        }
       
       
        print(flag);
if (flag!=3) {  transform.Translate(Vector3.forward * speed* Time.deltaTime); }
if (flag==3) {  transform.Translate(Vector3.forward * 0.1*speed* Time.deltaTime);}
        //engine control
}


По идее код должен возвращать имя объекта, разворачивать туда меш и отправлять его туда... print(name) утверждает что объекты генерятся функцией(спертой из мануалов), и возвращает честное имя, но на LookAt он уже говорит, что я ему подсовываю null, меш ведет себя соответственно. Наверно ошибка тупая, но уже день её ищу, попытки заставить код работать уже напоминают рандом и индусизм, такое чувство что он может перепрыгивать через блоки операторов.
Alwind
UNец
 
Сообщения: 18
Зарегистрирован: 09 июл 2011, 17:28

Re: JavaScript Unity - need little brain help

Сообщение Zaicheg 09 июл 2011, 17:55

Выглядит странно. Если соберёте тестовый проект — я посмотрю.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: JavaScript Unity - need little brain help

Сообщение Alwind 09 июл 2011, 19:34

Какие именно файлы позволяют запустить проект на другом компе? Вроде бы скрипт ни к чему не обращается, никак хитро не настраивался, чтобы что-то вне его влияло... таг только, он существует, объекты от него тоже.
Alwind
UNец
 
Сообщения: 18
Зарегистрирован: 09 июл 2011, 17:28

Re: JavaScript Unity - need little brain help

Сообщение Zaicheg 09 июл 2011, 20:12

Alwind писал(а):Какие именно файлы позволяют запустить проект на другом компе? Вроде бы скрипт ни к чему не обращается, никак хитро не настраивался, чтобы что-то вне его влияло... таг только, он существует, объекты от него тоже.

Папки Assets + Library целиком.
Либо выбрать все ассеты (или снять выделение, чтобы не было выбранных) и Assets → Export Package, но тут не перенесутся настройки проекта.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец

Re: JavaScript Unity - need little brain help

Сообщение AndreyMust19 09 июл 2011, 20:40

Попробуйте вместо
Синтаксис:
Используется javascript
transform.LookAt(Vector3(go.transform.position.x,go.transform.position.y,go.transform.position.z));

Это:
Синтаксис:
Используется javascript
transform.LookAt(go.transform);
Нужна помощь? Сами, сами, сами, сами, сами... делаем все сами
AndreyMust19
Адепт
 
Сообщения: 1119
Зарегистрирован: 07 июн 2011, 13:19

Re: JavaScript Unity - need little brain help

Сообщение Avatarchik 09 июл 2011, 20:57

Скопировал,запустил ваш код,ошибок нету.... :-?
Добавить ava-karaban в Skype
Аватара пользователя
Avatarchik
UNITрон
 
Сообщения: 274
Зарегистрирован: 04 апр 2009, 15:36
Откуда: Украина(Донецк)
  • ICQ

Re: JavaScript Unity - need little brain help

Сообщение Alwind 09 июл 2011, 22:07

transform.LookAt(go.transform);


Это уже индусство от отчаяния. Изначально там так и было.

Скопировал,запустил ваш код,ошибок нету....


Мда, странно... завтра на свежую голову посмотрю еще...
Alwind
UNец
 
Сообщения: 18
Зарегистрирован: 09 июл 2011, 17:28

Re: JavaScript Unity - need little brain help

Сообщение Alwind 10 июл 2011, 11:14

Не знаю, почему у вас работало, но ошибка нубская, когда рефакторил код случайно убил определение private var go : GameObject; вверху. В итогде go определялась при флаге 0 и при следующем вызове update уже и была null... правда остается загадка, как print находил имя объекта, но мало-ли как он устроен...

спасибо за помощь. \:D/
Alwind
UNец
 
Сообщения: 18
Зарегистрирован: 09 июл 2011, 17:28

Re: JavaScript Unity - need little brain help

Сообщение Alwind 10 июл 2011, 14:21

С позволения, еще вопрос, чтобы не плодить тем, не нашел ответа, зачем такое разнообразие языков в Unity, синтаксис знаю каждого, а вот какой использовать не знаю, т.к. непонятно как он с ними работает... с какой скоростью.
Alwind
UNец
 
Сообщения: 18
Зарегистрирован: 09 июл 2011, 17:28

Re: JavaScript Unity - need little brain help

Сообщение Zaicheg 10 июл 2011, 14:25

Alwind писал(а):С позволения, еще вопрос, чтобы не плодить тем, не нашел ответа, зачем такое разнообразие языков в Unity, синтаксис знаю каждого, а вот какой использовать не знаю, т.к. непонятно как он с ними работает... с какой скоростью.

Если опустить некоторые нюансы, то в сборке получаете почти одинаковый IL-код. Была там какая-то шняга с лишними инструкциями при некотором JS-коде и что-то про медленную работу то ли с массивами, то ли со списками, но вряд ли стоит заморачиваться. Можете посмотреть в сборке dll-файлы рефлектором сами и решить, насколько это вам важно.
Дьяченко Роман
e-mail: _zaicheg.reg@gmail.com
skype: zaicheg12
vkontakte: _vk.com/zaichegq
Работа: _wie3.com _www.sanviz.com
Аватара пользователя
Zaicheg
Адепт
 
Сообщения: 3024
Зарегистрирован: 19 июн 2009, 15:12
Откуда: Череповец


Вернуться в Почемучка

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 22