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=15809)

ILonion 21.08.2015 00:29

Ответ: Вопросы от новичка
 
Можно ли акромя поиска получить доступ к размеру (x,y,z) шейпа частиц
http://answers.unity3d.com/questions...ection-in.html
?

FREE MAN 10.09.2015 23:50

Ответ: Вопросы от новичка
 
Всем доброго времени суток!
Нужна подсказка.
Есть определенный объект (А) и объект (Б) объект (А) уже находится на сцене, а объект (Б) создается из кода
Код:

Instantiate (Б [0], new Vector3 (А[0].transform.position.x, А[0].transform.position.y + 3,А[0].transform.position.z), Quaternion.identity);
. Мне нужно просчитать дистанцию между этими объектами, делаю это так

Код:

using UnityEngine;
using System.Collections;

public class potera_gruza : MonoBehaviour {

        public Transform[] cars;
        //public static int seletc_gruz_random;
        public float Distance_gruz;
        void Start () {
       
        }

        //void Update () {
                void LateUpdate() {
                Debug.Log ("Destroy_gruzes "+Destroy_gruz.Destroy_gruzes);

                if (Time.frameCount % 20 == 0) {
                        if (cars[0]) {
                        float dist = Vector3.Distance (cars[0].position, transform.position);
                                        if (dist > Distance_gruz) {
                                        Destroy_gruz.Destroy_gruzes = 1;
                                                return;
                               
                                        }
                        }
        }
}
}

Дистанцию я получаю все ок, но он считает дистанцию только от той точки где создался префаб. Как сделать чтобы это точка двигалась за моим объектом? За ранее спасибо если не понятен вопрос то дополню.

pax 11.09.2015 01:27

Ответ: Вопросы от новичка
 
Так надо посчитать дистанцию или чтобы объект двигался?

FREE MAN 11.09.2015 01:41

Ответ: Вопросы от новичка
 
Надо как то заставить точку где создается префаб двигаться вместе с объектом который движется. Ситуация такая, Есть грузовик я заехал в точку создал груз, начинаю отъезжать, а груз считает дистанцию не от грузовика а от точки где создался груз. Нужно что бы груз считал дистанцию с грузовиком.

pax 11.09.2015 02:18

Ответ: Вопросы от новичка
 
Сделать груз чайлдом к грузовику? Считать дистанцию между грузом и грузовиком?

FREE MAN 11.09.2015 02:23

Ответ: Вопросы от новичка
 
Так можно, будет работать, но тогда теряется весь смысл. Я хотел программно создавать груз и удалять когда мне надо.

Жека 11.09.2015 06:54

Ответ: Вопросы от новичка
 
Phyton, а в чём проблема программно удалить чайлда? Он ничем не отличается от других объектов.

gruz = Instantiate();
gruz.setParent(gruzovik);
// что-то делаем
Destroy(gruz);

всё должно работать. даже gruz.setParent(null); можно не делать.

FREE MAN 11.09.2015 09:35

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Жека (Сообщение 299525)
Phyton, а в чём проблема программно удалить чайлда? Он ничем не отличается от других объектов.

gruz = Instantiate();
gruz.setParent(gruzovik);
// что-то делаем
Destroy(gruz);

всё должно работать. даже gruz.setParent(null); можно не делать.

Проблем в создании, удаление нету. Проблема в том, что груз считает дистанцию только от точки, где создался. А нужно, что бы считалась от грузовика. Грузовик то двигается и дистанция не считается с грузовиком, а точку, где создался префаб не двигается вместе с грузовиком.

Жека 11.09.2015 13:24

Ответ: Вопросы от новичка
 
Щас проверил: если двигать родителя, то дочерний transform.position тоже меняется. В редакторе не меняется, а если вывести в коде
PHP код:

print(transform.position.x+","+transform.position.y); 

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

EDIT: в редакторе мы видим координаты, которые соответствуют transform.localPosition - это смещение относительно родителя.

FREE MAN 11.09.2015 16:26

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Жека (Сообщение 299538)
Щас проверил: если двигать родителя, то дочерний transform.position тоже меняется. В редакторе не меняется, а если вывести в коде
PHP код:

print(transform.position.x+","+transform.position.y); 

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

EDIT: в редакторе мы видим координаты, которые соответствуют transform.localPosition - это смещение относительно родителя.

Я решил проблему другим способом сделал Тригер в виде сферы и повесил ее на грузовик, по тегу проверяю вышел ли груз за пределы сферы и все нормально. С дистанцией таки не смог разобраться как ни крути груз считает дистанцию только от точки где создался. Если бы груз был просто в сцене загружен сразу то проблем нету считает дистанцию корректно. Когда создаешь префаб кодом происходит натуральное шило.

pax 12.09.2015 02:08

Ответ: Вопросы от новичка
 
Да имхо ты где-то простой косяк в расчетах сделал.
PHP код:

Vector3.Distance (cars[0].positiontransform.position); 

Тут как я понял дистанция между объектом potera_gruza (transform) и машиной cars[0]. Где сам груз то?

FREE MAN 12.09.2015 11:34

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 299558)
Да имхо ты где-то простой косяк в расчетах сделал.
PHP код:

Vector3.Distance (cars[0].positiontransform.position); 

Тут как я понял дистанция между объектом potera_gruza (transform) и машиной cars[0]. Где сам груз то?

Код:

using UnityEngine;
using System.Collections;

public class potera_gruza : MonoBehaviour {

        public Transform[] cars;
        //public static int seletc_gruz_random;
        public float Distance_gruz;
        void Start () {
       
        }

        //void Update () {
                void LateUpdate() {
                Debug.Log ("Destroy_gruzes "+Destroy_gruz.Destroy_gruzes);

                if (Time.frameCount % 20 == 0) {
                        if (cars[0]) {
                        float dist = Vector3.Distance (cars[0].position, transform.position);
                                        if (dist > Distance_gruz) {
                                        Destroy_gruz.Destroy_gruzes = 1;
                                                return;
                               
                                        }
                        }
        }
}
}

Этот скрипт и висит на грузе.
А вот и сам просчет дистанции с машиной и грузом.
Код:

float dist = Vector3.Distance (cars[0].position, transform.position);

pax 12.09.2015 16:59

Ответ: Вопросы от новичка
 
Есть вероятность, что при создании кодом и создании в редакторе структуры объектов отличаются? Или возможно скрипт potera_gruza добавляется не тому объекту?

FREE MAN 12.09.2015 18:26

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от pax (Сообщение 299567)
Есть вероятность, что при создании кодом и создании в редакторе структуры объектов отличаются? Или возможно скрипт potera_gruza добавляется не тому объекту?

Скрипт добавляется грузу. Я думаю, что при создании кодом теряется связь префаба с грузовиком. По факту я решил проблему уже только через тригер.

pax 12.09.2015 21:27

Ответ: Вопросы от новичка
 
Префаб никак не может быть связан с объектом сцены, только наоборот. При создании экземпляра префаба в сцене надо обязательно ему ссылки на объекты сцены передавать.


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

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