Создание Object в пространстве [РЕШЕНО]

Программирование на Юнити.

Создание Object в пространстве [РЕШЕНО]

Сообщение Jakobs 10 ноя 2010, 21:33

[V]Решил реализовать управление Object-а как в Игре EVE-Online

к Object-у привязал Rigidbody, заставил его двигаться к объекту...

и тут попался на проблему, как создать этот объект в пространстве так чтобы он создался не перед камерой, а перед объектом который мне и надо двигать к созданному объекту...

после не долгих размышлений пришел к одной идее: я создал сферу вокруг объекта,(размер 100 по всем осям что в 90 раз больше объекта, камера максимум может отойти от объекта на 30, что позволяет не выходить за рамки сферы ), и решил сделать так, чтоб внутри сферы я тыкал по ней и в ней на координатах мыши появился объект к которому надо двигаться...

вот как это выглядет:
передвижение по клику в 3д
Изображение
и тут проблема внутри сферы не могу создать объект, он создается или в противоположном месте с внешней стороны сферы, или в центре сферы.
прошу помочь, или предложить альтернативный вариант
заранее спасибо
Последний раз редактировалось Jakobs 15 ноя 2010, 04:35, всего редактировалось 2 раз(а).
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение gnoblin 10 ноя 2010, 22:31

код?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Создание Object в пространстве

Сообщение Jakobs 10 ноя 2010, 23:07

gnoblin писал(а):код?


Синтаксис:
Используется javascript
var prefab: Transform;


function Update () {
    if (Input.GetMouseButtonDown(0)) {
        var ray: Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        var hit: RaycastHit;

        if (Physics.Raycast(ray, hit)) {
            Instantiate(prefab, hit.point, Quaternion.identity);
        }
    }
}
 
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение gnoblin 10 ноя 2010, 23:26

у меня такая схема работает с вывернутой наизнанку сферой из 3дмакса с мешколайдером.

с юнитевским сферическим коллайдером оно работать будет врядле
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Создание Object в пространстве

Сообщение Jakobs 11 ноя 2010, 00:20

gnoblin писал(а):у меня такая схема работает с вывернутой наизнанку сферой из 3дмакса с мешколайдером.

с юнитевским сферическим коллайдером оно работать будет врядле


Логично, я пока решил проблему кубиком из 6 Плоскостей
если возможно можете скинуть реверсную сферу, так как на этой машинке не стоит ни мая ни 3дмакс

ище вопрос, как можно повернуть объект к другому объекту, не используя lookAt?
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение Kann 11 ноя 2010, 01:27

Jakobs писал(а):[] Решил реализовать управление Object-а как в Игре EVE-Online

не понел зачем вам сфера.... привяжите к мышке ГО, при клике в пространстве передавайте координаты этого ГО, и летите в ту сторону.....
для поворота можете использовать Quaternion
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Создание Object в пространстве

Сообщение Jakobs 11 ноя 2010, 02:01

Kann писал(а):
Jakobs писал(а):[] Решил реализовать управление Object-а как в Игре EVE-Online

не понел зачем вам сфера.... привяжите к мышке ГО, при клике в пространстве передавайте координаты этого ГО, и летите в ту сторону.....
для поворота можете использовать Quaternion


От первого лица я-бы так и сделал-бы
а тут я должен знать направления согласно осей объекта а не камеры, и для этого я решил использовать сферу, так как она будет от себя передавать направления для объекта заданного из камеры.
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение Jakobs 11 ноя 2010, 02:09

Синтаксис:
Используется javascript
var prefab : Transform;

function Update () {
    if (Input.GetMouseButtonDown(0)) {
                //Destroy (gameObject.Find("B(Clone)"));
        var ray: Ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        var hit: RaycastHit;

        if (Physics.Raycast(ray, hit)) {
            Instantiate(prefab, hit.point, Quaternion.identity);
        }
    }
}

 


появилась странная ошибка, главное что сначало всё работало

Код: Выделить всё
NullReferenceException
UnityEngine.Camera.ScreenPointToRay (Vector3 position) (at E:/BuildAgent/work/68355d6e5d19d587/Runtime/Export/Generated/Graphics.cs:614)
testscript.Update () (at Assets/star/Scripts/testscript.js:6)
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение Kann 11 ноя 2010, 02:30

причем тут камера ? вы передаете координаты ГО а не камеры
кстати можно и не передавать координаты го, а тупо передать координаты в пространстве кодом ниже
Код: Выделить всё
ScreenToWorldPoint(new Vector3 (Input.mousePosition.x,Input.mousePosition.y,distance));
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Создание Object в пространстве

Сообщение Jakobs 11 ноя 2010, 03:14

Kann писал(а):причем тут камера ? вы передаете координаты ГО а не камеры
кстати можно и не передавать координаты го, а тупо передать координаты в пространстве кодом ниже
Код: Выделить всё
ScreenToWorldPoint(new Vector3 (Input.mousePosition.x,Input.mousePosition.y,distance));


Это я понял, интересно
но обычно если нету конечного объекта, то объект должен был создаваться на не досягаемом пространстве так как Дистанс = бесконечности, а это значит бессмысленный цыкл, но если это работает то обязательно попробую =), Спасибо за помощь =)
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ

Re: Создание Object в пространстве

Сообщение Kann 11 ноя 2010, 13:13

distance = расстояние от камеры по Z , если вы делаете управление как в ЕвЕ. в таком случае камера летает по орбите объекта, и направление полета вы задаете от того куда смотрит камера, используя глубину Z
Kann
Старожил
 
Сообщения: 553
Зарегистрирован: 05 ноя 2009, 14:06

Re: Создание Object в пространстве

Сообщение Jakobs 15 ноя 2010, 04:34

Kann писал(а):distance = расстояние от камеры по Z , если вы делаете управление как в ЕвЕ. в таком случае камера летает по орбите объекта, и направление полета вы задаете от того куда смотрит камера, используя глубину Z


Попробувал работает, Спасибо
(3A4OT)
Аватара пользователя
Jakobs
UNIт
 
Сообщения: 103
Зарегистрирован: 08 янв 2010, 01:09
Откуда: Киев, Украина
  • Сайт
  • ICQ


Вернуться в Скрипты

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

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