Воскресенье, 17 Ноября 2024, 20:51

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

[ Новые сообщения · Игроделы · Правила · Поиск ]
Вопрос-[ответ] по Unity
QWER56Дата: Понедельник, 09 Августа 2010, 10:58 | Сообщение # 1
старожил
Сейчас нет на сайте
Вопрос-[Ответ] по Unity3d

  • База скриптов Unity3d
  • Курс Уроков по Unity 3D от Alcatraz

    ConsMark - поисковик по интернет магазинам.

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • 05142Дата: Пятница, 02 Декабря 2011, 14:02 | Сообщение # 1161
    постоянный участник
    Сейчас нет на сайте
    noTformaT, думаю он о другом
    смотри, объясню на примере
    вот есть gameobject в координатах (5,5,5)
    если в скрипт написать
    Code
    transform.Translate(1,0,1);

    то координаты будут (6,5,6)

    если же написать
    Code
    transform.position = new Vector3(1,0,1);

    то координаты будут (1,0,1)

    тоесть одно просто смещает объект, а второе указывает позицию объекта


    mecinvader
    andarkyДата: Пятница, 02 Декабря 2011, 15:59 | Сообщение # 1162
    старожил
    Сейчас нет на сайте
    вопрос возник вот почему:
    я использую стандартный FPS-контроллер, который доработал сам, переписав MouseLook на JS,
    добавив регулировку высоты камеры средней кнопкой.

    у меня есть земля и дом многоэтажный.

    этажи я переклюаю так:
    Code

    level1.transform.position.y=startPosition.y;
    level2.transform.position.y=1000;

    чтоб выкинуть второй этаж и видеть срез первого

    НО! находясь на втором меня тоже кидает вверх и потом я доооооооооооолго падаю вниз

    приходится так писать:
    Code
    OnMouseDown()
    {
    if (glob.lev==1) {
    level1.transform.position.y=startPosition.y;
    level2.transform.position.y=1000;
    level3.transform.position.y=1000;
    ...
    }
    if (glob.lev==2) {
    level1.transform.position.y=glob.lev1startPosition.y;
    level2.transform.position.y=glob.lev2startPosition.y;
    ...
    }

    ....
    OnMouseUp()
    {
    player.transform.position.y=glob.lev<n>startPosition.y+0.5;

    }


    становишся чуть выше свое позиции только после отжатия мыши,
    но все равно ведь мелькает изображение запредельно области 1000.y

    с 1-го на 2-й, с в 2-го на 3-й и т.д. - без проблем.
    А вот сверху вниз - жо...

    ПОЧЕМУ так??

    Добавлено (02.12.2011, 15:59)
    ---------------------------------------------
    05142,
    ты почти угадал!



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик


    Сообщение отредактировал andarky - Пятница, 02 Декабря 2011, 15:58
    pixeyeДата: Пятница, 02 Декабря 2011, 16:15 | Сообщение # 1163
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    у меня есть земля и дом многоэтажный.

    этажи я переклюаю так:


    Пока не очень понятно, эмм - ты двигаешь этажи в пространстве?


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    andarkyДата: Пятница, 02 Декабря 2011, 16:31 | Сообщение # 1164
    старожил
    Сейчас нет на сайте
    pixeye,
    да именно,
    там на к этажам привязана куча объектиков,
    я сначала пробовал делать этажу renderer.enabled=false
    но там очень много объектов получилось.

    А вообще: я могу ходить вокруг дома, заходить в него,
    переключаю этажи видя срез (как СИМС)



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    noTformaTДата: Пятница, 02 Декабря 2011, 16:32 | Сообщение # 1165
    Ukrainian independent game developer
    Сейчас нет на сайте
    Quote (andarky)
    да именно,
    там на к этажам привязана куча объектиков,

    ммм,надо двигать гг и его камеру, но точно не этажи....


    @noTformaT
    pixeyeДата: Пятница, 02 Декабря 2011, 16:39 | Сообщение # 1166
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    pixeye,
    да именно,
    там на к этажам привязана куча объектиков,
    я сначала пробовал делать этажу renderer.enabled=false
    но там очень много объектов получилось.


    Забудь об этом - очень плохой и не очевидный вариант, геморроя больше.
    Ммм тебе нужно скрывать не этаж а все, что находится внутри, ну тебеж надо стены снаружи видеть? Тут еще вопрос в том, переходя на второй этаж у тебя нет никаких ситуаций когда надо видеть этаж ниже? ( лестничный пролет, или незнаю просто дыра на полу).

    Если тебе нужно отключить этаж полностью я бы поступал так - создавал листинг объектов на этаже, если у тебя есть какие объекты которые динамически добавляются на этаж от действий игрока их тоже надо заносить в листинг, потом бы прогонял все объекты и отключал их полностью. ( Если у тебя объекты статичны то загонять их в один меш и отключать совсем станет просто )


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Пятница, 02 Декабря 2011, 16:41
    andarkyДата: Пятница, 02 Декабря 2011, 16:55 | Сообщение # 1167
    старожил
    Сейчас нет на сайте
    дело в том, что объекты все активны
    и имеют свои свойства видимости (т.е. у каждого свои настройки render.enabled)
    если я их все отключу, то включив включатся все.

    Им мне нужно видеть все что нужно. Например верхний этаж может быть просто мостик,
    нужно видеть то что внизу



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    pixeyeДата: Пятница, 02 Декабря 2011, 17:07 | Сообщение # 1168
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    дело в том, что объекты все активны
    и имеют свои свойства видимости (т.е. у каждого свои настройки render.enabled)
    если я их все отключу, то включив включатся все.

    Им мне нужно видеть все что нужно. Например верхний этаж может быть просто мостик,
    нужно видеть то что внизу


    Если у тебя будет список объектов то ты сможешь сделать проверку, например, если они никак не в зоне видимости игрока - то отключить.

    Добавлено (02.12.2011, 17:07)
    ---------------------------------------------
    Вот, давай так - ты сейчас подробно опишешь то что хочешь сделать, твой отрезок кода посмотрел и он сейчас путает.

    Просто скажи как все должно работать и будем от этого отталкиваться.


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    andarkyДата: Пятница, 02 Декабря 2011, 17:09 | Сообщение # 1169
    старожил
    Сейчас нет на сайте
    pixeye,
    допустим, что я сделал всему этажу с 50 объектами Render.enabled=false;
    НО я все же не смогу тыкать на объекты своего этажа, т.к. то что надо мной хоть и невидимо, но колайдеры имеет.

    и вообще что такого страшного, что объект перемещаю далеко-далеко. Не видим - значит не рендерится

    Добавлено (02.12.2011, 17:09)
    ---------------------------------------------
    забыл....
    вверх смотреть я не могу.



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    pixeyeДата: Пятница, 02 Декабря 2011, 17:12 | Сообщение # 1170
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    допустим, что я сделал всему этажу с 50 объектами Render.enabled=false;
    НО я все же не смогу тыкать на объекты своего этажа, т.к. то что надо мной хоть и невидимо, но колайдеры имеет.


    Отключи объекты полностью. А не только рендер.

    Насчет перемещений - может и ничего страшного, но создает лишнюю путанницу и вероятность ошибиться.


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю

    andarkyДата: Пятница, 02 Декабря 2011, 17:31 | Сообщение # 1171
    старожил
    Сейчас нет на сайте
    pixeye,
    но ведь написать
    level1.y=1
    level2.y=1000
    level3.y=1000
    level4.y=1000
    level5.y=1000
    намного проще чем создавать
    массив для хранения свойств видимости и наличия коллайдера

    Как написать цикл меняющий все свойства чилдренов - я знаю,
    а если у чилдрена есть свои чилдрены, а у тех еще свио подчилдрены... ужас
    как тут быть?
    еще больше путаницы

    и еще объекты на этаже я могу создавать/удалять, а количество этажей не меняется - с этим все ясно и понятно где тут можно ошибится



    Моя страничка по дизайну
    GameDev//Design//3D
    Ютубчик
    pixeyeДата: Пятница, 02 Декабря 2011, 17:35 | Сообщение # 1172
    Red Winter Software
    Сейчас нет на сайте
    Quote (andarky)
    но ведь написать
    level1.y=1
    level2.y=1000
    level3.y=1000
    level4.y=1000
    level5.y=1000
    намного проще чем создавать
    массив для хранения свойств видимости и наличия коллайдера

    Как написать цикл меняющий все свойства чилдренов - я знаю,
    а если у чилдрена есть свои чилдрены, а у тех еще свио подчилдрены... ужас
    как тут быть?
    еще больше путаницы


    Проще не значит правильно или верно. Сейчас эта простота тебе помогает - но вот возникнет ситуация когда из за своей лени или не желания лишний раз что-то прописать у тебя игра полетит. И придется переписывать еще больше))

    Напиши что ты конкретно хотел сделать и будем думать дальше.

    А лучше в лс мне скинь сцену в юнити, так бы легче было


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Пятница, 02 Декабря 2011, 17:38
    RipDevДата: Пятница, 02 Декабря 2011, 18:02 | Сообщение # 1173
    гейм-дизайнер
    Сейчас нет на сайте
    Top Down Shooter?
    Какой то подход странный, дели этажи и объекты по слоям, потом отключай то чего не надо.


    Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
    LevinДата: Пятница, 02 Декабря 2011, 23:30 | Сообщение # 1174
    Художник
    Сейчас нет на сайте
    вот идешь ты, идешь. и тут резко проигрывается звук, и фоновый звук как сделать, в определенной части карты


    RipDevДата: Пятница, 02 Декабря 2011, 23:56 | Сообщение # 1175
    гейм-дизайнер
    Сейчас нет на сайте
    Levin, Поставить тригер.

    Взгляни на сей изукрашенный образ, на тело, полное изъянов, составленное из частей, болезненное, исполненное многих мыслей, в которых нет ни определённости, ни постоянства.
    iXeroxДата: Суббота, 03 Декабря 2011, 03:40 | Сообщение # 1176
    частый гость
    Сейчас нет на сайте
    У меня вопросик. Хочу, что бы, когда я жму на Cube, то на нем менялась текстура. Подскажите пожалуйста как это можно реализовать на JavaScript?

    Добавлено (03.12.2011, 03:36)
    ---------------------------------------------
    Вот, сам нашел. Кому надо - ловите:

    Code

    var pressed = 0;
    var clear_o : Texture;
    var point_o : Texture;
    var goto_o : Texture;

    function Update()
    {  
      var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);  
      var hit : RaycastHit;  
      if (collider.Raycast (ray, hit, 100.0))  
      {  
       if(pressed==0)
       {
         renderer.material.mainTexture = point_o;
         pressed = 1;
       }
       else if(pressed==1)
       {
         renderer.material.mainTexture = goto_o;
         pressed = 2;
       }
       else if(pressed==2)
       {
         pressed = 0;
       }
      }  
    }  

    Добавлено (03.12.2011, 03:40)
    ---------------------------------------------
    Только, почему-то данный скрипт не работает на iOS. Может кто-нибудь помочь?

    M1ghtMortalДата: Суббота, 03 Декабря 2011, 09:02 | Сообщение # 1177
    участник
    Сейчас нет на сайте
    iXerox, Для того, что бы на iOS работало нужно заменить Input.mousePosition на Touch.position (не уверен, под телефоны не писал).

    Java/C++/Unity(C#) Programmer.
    Мой блог MightMortal.RU
    AtomKriegДата: Суббота, 03 Декабря 2011, 09:03 | Сообщение # 1178
    частый гость
    Сейчас нет на сайте
    Quote (andarky)
    level1.y=1
    level2.y=1000
    level3.y=1000
    level4.y=1000
    level5.y=1000


    Они занимают память.
    pixeyeДата: Суббота, 03 Декабря 2011, 11:58 | Сообщение # 1179
    Red Winter Software
    Сейчас нет на сайте
    Quote (M1ghtMortal)
    iXerox, Для того, что бы на iOS работало нужно заменить Input.mousePosition на Touch.position (не уверен, под телефоны не писал).


    раз не уверен нечего советовать. Для справки.

    Input.mouse работает на IOS однако с ним нельзя сделать мултитач. Для мултитача нужно получать значения touch position ( нескольки штук ), так к ак не все игры используют мультитач и если ты уверен что он тебе ненужен то можешь пользовать mouse

    Добавлено (03.12.2011, 11:58)
    ---------------------------------------------
    Quote (iXerox)
    Вот, сам нашел. Кому надо - ловите:

    Твой скрипт неверен. Ты понимаешь что в update после смены значения прессд он будет выполнять цикл дальше тем самым сразу перейдя в прессд 1 и потом в прессд 2?

    Чтобы это работало правильно нужно написать так

    function Update()
    {
    var ray : Ray = Camera.main.ScreenPointToRay (Input.mousePosition);
    var hit : RaycastHit;
    if(Input.GetMouseButtonUp(0)){
    if (collider.Raycast (ray, hit, 100.0))
    {
    if(pressed==0)
    {
    renderer.material.mainTexture = goto_o;
    pressed = 1;

    }
    else if(pressed==1)
    {
    renderer.material.mainTexture = point_o;
    pressed = 0;
    }

    }
    }
    }

    Однако сам по себе скрипт конечно все равно не очень. Лично я стараюсь избегать update функции.
    Неазбуль коллайдер поставить на свой объект. И когда пишешь для айфона на js переключайся на строгую типизацию данных.

    #pragma strict в самом начале скрипта поставь. (хотя щас помойму на js в юнити это по умолчанию )


    ACTORS - мой фреймворк на Unity
    Until We Die - игра над которой работаю



    Сообщение отредактировал pixeye - Суббота, 03 Декабря 2011, 12:02
    DusklyДата: Суббота, 03 Декабря 2011, 20:13 | Сообщение # 1180
    Rush Games
    Сейчас нет на сайте
    дайте прикольные исходники игр


    Разрабатываеться:
    флеш игра для соц. Сетей (Бои друзей) - временное название!
    3д игра (пока без названия)
    Поиск:

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