Понедельник, 30 Сентября 2024, 12:38

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • lentinantДата: Воскресенье, 11 Августа 2013, 01:21 | Сообщение # 4481
    ленивый программист
    Сейчас нет на сайте
    romgerman, по описанию в доках, мне показалось, что это суть этих кастов - вместо точки (как в Raycast) мы запускаем полноценный объект. Мне же нужно что-то, что более близкое к Raycast, просто чтобы вместо прямой работало с кривой. Но, я так понял, реализовать это можно, скорее всего, только через разбиение дуги на прямые отрезки.

    Добавлено (11.08.2013, 01:21)
    ---------------------------------------------
    Вот же блин, я только что понял, что мне, в принципе, и не нужен Raycast или родственные ему функции.


    Когда-то тут будут ссылки на крутые проекты. Или нет.

    Сообщение отредактировал lentinant - Воскресенье, 11 Августа 2013, 01:21
    MasterSamboДата: Воскресенье, 11 Августа 2013, 11:25 | Сообщение # 4482
    заслуженный участник
    Сейчас нет на сайте
    Цитата (zisX)
    arkady, Устанавливай free и не парься.

    А там чего-то без лицензии не принимается cry
    zaicev9797Дата: Воскресенье, 11 Августа 2013, 12:05 | Сообщение # 4483
    AbRaKaDaBrA
    Сейчас нет на сайте
    Надо в окошке авторизпваться (эмэил написать, пароль придумать) перед этим ессно надо выбрать фри версию или 30 дней триал

    проект Mysterious Space. The losted moment
    Fr0sTДата: Воскресенье, 11 Августа 2013, 12:10 | Сообщение # 4484
    постоянный участник
    Сейчас нет на сайте
    Ребят помогите мне,есть в юнити кокието способы оптимизации игры,туман например поставить,или с ним наоборот игра нагружается?Ато наделал простеньких моделек в google sketch up,уровень из них сделал,не маленький но и не огромный,средний короче.Деревьев навалил,кустов.А игра висает,даже дпльность камеры отрубал - ничего.Помогите кто знает что там можно мне сделать?



    AlastarДата: Воскресенье, 11 Августа 2013, 12:16 | Сообщение # 4485
    постоянный участник
    Сейчас нет на сайте
    Fr0sT, значит у тебя убийственные деревья или модели, попробуй уменьшить кол-во полигонов.

    Big Boobs (+18 only!)
    zaicev9797Дата: Воскресенье, 11 Августа 2013, 12:55 | Сообщение # 4486
    AbRaKaDaBrA
    Сейчас нет на сайте
    Окошко статистикс в студию

    проект Mysterious Space. The losted moment
    Fr0sTДата: Воскресенье, 11 Августа 2013, 13:24 | Сообщение # 4487
    постоянный участник
    Сейчас нет на сайте
    Модельки ооочень низкополигональные.
    Ну да,вообщем я заглянул в статистик и увиел что у меня там туева хуча анимаций воспроизводится.Это предметы которые я должен собирать - колечки.Каждый имеет анимацию.А так понимаю нужно взять массив этих предметов и отрубить их все,и всключать если расстояние от меня до этого предмета меньше ста например.(поправка это фигня,дело в рендере)
    Еще заметил,что это рендер объектов.Когда он больше 17 то начинает лагать.Как с этим справиться??? Вот накатал скрипт а он чтото не робит:

    Код
    public GameObject[] allRings;
    void Start ()
    {
    allRings = GameObject.FindGameObjectsWithTag("Ring");
    }

    void Update ()
    {
    foreach(GameObject ring in allRings)
    {
    float dist = Vector3.Distance(transform.position,ring.transform.position);
    if(dist > ringDist)
    {
    ring.gameObject.SetActive(false);
    }
    if(dist < ringDist)
    {
    ringl.gameObject.SetActive(true);
    }
    }
    }

    Вот скрин,кстати когда в инспекторе отрубаю эти кольца(они и в игре исчезают)то сразу всё летит.


    Кстати когда камера в пол то всё бысто,а когда вдоль уровня то лаги,а у меня уровень чисто прямо идет,нужно вперед бежать как в креше на пс1.Мож в импорте моделей накосячил?






    Сообщение отредактировал Fr0sT - Воскресенье, 11 Августа 2013, 18:41
    KiraДата: Понедельник, 12 Августа 2013, 19:55 | Сообщение # 4488
    заслуженный участник
    Сейчас нет на сайте
    как обнулить RaycastHit hit; ?
    мой код:
    Код

      if (Input.GetMouseButtonDown(0))
             {
                 RaycastHit hit;
                 ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                 if (Physics.Raycast(ray, out hit))
                 {

                     if (hit.collider != null)
                     {
                         Click(hit.collider.gameObject);
                     }
                 }
             }

    Что бы убрать создание хита, нужно как то его обнулять. hit=null; не работает.


    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
    lentinantДата: Понедельник, 12 Августа 2013, 20:29 | Сообщение # 4489
    ленивый программист
    Сейчас нет на сайте
    А зачем обнулять? Если ты хочешь использовать его в другом Рейкасте, он просто его перепишет.

    Когда-то тут будут ссылки на крутые проекты. Или нет.

    Сообщение отредактировал lentinant - Понедельник, 12 Августа 2013, 20:32
    KiraДата: Понедельник, 12 Августа 2013, 21:55 | Сообщение # 4490
    заслуженный участник
    Сейчас нет на сайте
    lentinant, у меня код в апдайте, и если не обнулить хит будет срабатывать всегда.

    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн
    seamanДата: Понедельник, 12 Августа 2013, 23:26 | Сообщение # 4491
    старожил
    Сейчас нет на сайте
    Цитата
    если не обнулить хит будет срабатывать всегда.

    Чего?
    Цитата
    hit.collider != null

    Вот это зачем? Raycast просто не сработает, если не будет коллайдера.
    Совет - откройте мануал и почитайте про Raycast. Вы его совсем не понимаете.
    lentinantДата: Вторник, 13 Августа 2013, 01:33 | Сообщение # 4492
    ленивый программист
    Сейчас нет на сайте
    Цитата (Kira)
    у меня код в апдайте, и если не обнулить хит будет срабатывать всегда

    Я в упор не понимаю, что у тебя за проблема. Во первых, Хит у тебя - локальная переменная, и при вызове каждого апдейта создается заново. Во вторых, в рейкасте он с модификатором out, а это значит, что функция может его менять (а в случае с рейкастом, я думаю, она его как раз обнуляет).


    Когда-то тут будут ссылки на крутые проекты. Или нет.
    Fr0sTДата: Вторник, 13 Августа 2013, 10:27 | Сообщение # 4493
    постоянный участник
    Сейчас нет на сайте
    Я решил сделать чтобы камеры сама становилась за спину игрока,для этого нужно сделать чтобы она двигалась относитьельно игрока и давать ей координату например (0,0,-10).Но запихнуть камеру как дочерний объект мне не надо,т.к нужжно чтобы она медленно за спину ему становилась.Вопрос как сделать?Пробовал Transform.InverseTransformPoint но у меня ничего не вышло.



    EchoITДата: Вторник, 13 Августа 2013, 10:46 | Сообщение # 4494
    старожил
    Сейчас нет на сайте
    Fr0sT, Player.transform.position-Player.transform.forward+Player.transform.up и т.д., пробуй разные варианты этих комбинаций, дели/умножай и будет то, что надо.

    Долгожданный анонсик: State of War
    White9Дата: Вторник, 13 Августа 2013, 11:14 | Сообщение # 4495
    заслуженный участник
    Сейчас нет на сайте
    Fr0sT, используй стандартный скрипт smoothfollow - он как раз для этого )
    Fr0sTДата: Вторник, 13 Августа 2013, 11:18 | Сообщение # 4496
    постоянный участник
    Сейчас нет на сайте
    EchoIT, чтоно спасибо,я ваще об этом не думал)
    White9, нее мне это скрипт не пойдет,мне нужно свою камеру,она нуу другая немного.




    KiraДата: Вторник, 13 Августа 2013, 17:25 | Сообщение # 4497
    заслуженный участник
    Сейчас нет на сайте
    Цитата (lentinant)
    Я в упор не понимаю, что у тебя за проблема. Во первых, Хит у тебя - локальная переменная, и при вызове каждого апдейта создается заново. Во вторых, в рейкасте он с модификатором out, а это значит, что функция может его менять (а в случае с рейкастом, я думаю, она его как раз обнуляет).

    Это временное решение, т.к хит уничтожается и с новым циклом создается вновь. А как по твоему, получить хит? ведь функция булева? естественно out.
    а в случае с рейкастом, я думаю, она его как раз обнуляет
    Как раз-таки нет, если ткнуть на го с колайдером, а потом в пустое место, то вернется последний го с колайдером, чего мне не нужно.
    Цитата (seaman)
    Вот это зачем? Raycast просто не сработает, если не будет коллайдера.

    Так мне и нужно. Нет колайдера, значит не надо.

    Та суть не так важно, просто советовали для мобильников не создавать переменных в апдейтах.
    Код
    using UnityEngine;
    using System.Collections;

    public class MouseClick : MonoBehaviour
    {

         // Use this for initialization

         static Ray ray;

         void Start()
         {

         }
         public delegate void MouseCliked(GameObject go);
         // Update is called once per frame
         public MouseCliked Click;

         public void mouseKlick()
         {
             if (Input.GetMouseButtonDown(0))
             {
                 RaycastHit hit;
                 ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                 if (Physics.Raycast(ray, out hit))
                 {

                     if (hit.collider != null)
                     {
                         Click(hit.collider.gameObject);
                     }

                 }
             }

         }
         void Update()
         {
             mouseKlick();

         }
    }

    Вообщем не думаю, что из за одной переменной мобильник напряжется.


    Unity3d разработчик на С#. Лучшее спасибо + в репу.
    "Безумие: делать одно и то же снова и снова, и ждать при этом разных результатов".
    "Человек, который никогда не ошибался никогда не пробовал ничего нового".
    "Если человек может спокойно управлять автомобилем во время поцелуя красивой девушки, значит он уделяет поцелую недостаточно внимания”. Альберт Эйнштейн


    Сообщение отредактировал Kira - Вторник, 13 Августа 2013, 17:36
    VickaДата: Среда, 14 Августа 2013, 11:20 | Сообщение # 4498
    Another ART
    Сейчас нет на сайте
    А есть перевод на родной - Script Reference?

    PoqXertДата: Среда, 14 Августа 2013, 12:26 | Сообщение # 4499
    постоянный участник
    Сейчас нет на сайте
    http://unity.ogf.su/Documentation/ScriptReference/

    Расширения для Unity3D
    Блог программиста - PoqXert.ru
    Fr0sTДата: Четверг, 15 Августа 2013, 10:28 | Сообщение # 4500
    постоянный участник
    Сейчас нет на сайте
    А как получить позицию какого нибудь зд объекта на экране?
    Вот так vector3 pos = Camera.WorldToScreenPoint(enemy.transform.position);






    Сообщение отредактировал Fr0sT - Четверг, 15 Августа 2013, 10:35
    Поиск:

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