Среда, 27 Ноября 2024, 09:35

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

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

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

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

    Сообщение отредактировал QWER56 - Вторник, 26 Июля 2011, 20:54
  • NinbousДата: Воскресенье, 07 Мая 2017, 13:40 | Сообщение # 8321
    уже был
    Сейчас нет на сайте
    Всем привет! Ребята как убрать тень у деревьев? Один и тот же прифаб, но когда я перетаскиваю прифаб просто на сцену то тени у него нет, а когда юзаю в террейне тень появляется, как убрать тень чтобы модно было юзать как кисть в террейне?
    BoДата: Воскресенье, 07 Мая 2017, 21:12 | Сообщение # 8322
    почетный гость
    Сейчас нет на сайте
    Вопрос из разряда очень нубских.
    Делал проект в 4.6. Доделал, решил перенести его в 5,6 чтобы была возможность выгрузить в WebGL.
    И тут обнаружились забавные вещи.

    раньше в Unity 4.6 можно было написать что-нибудь типа

    Код
    this.rigidbody2D.velocity = ....


    но в Unity 5 теперь надо делать так:

    Код
    shipRigidbody = GetComponent<Rigidbody2D>();


    и только после этого обращаться к компоненту rigidbody2D

    Раньше можно было написать

    Код
    audio.Play
    rigidbody2D.velocity += tweak

    выглядело коротко, читалось легко

    Код
    GetComponent<AudioSource>().Play();
    GetComponent<Rigidbody2D>().velocity() += tweak;

    Новый вариант выглядит громоздким хотя по сути делает тоже самое

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


    Сообщение отредактировал Bo - Воскресенье, 07 Мая 2017, 21:12
    seamanДата: Понедельник, 08 Мая 2017, 00:58 | Сообщение # 8323
    старожил
    Сейчас нет на сайте
    rigidbody может не быть
    audio может не быть
    Если их нет - встроенные переменные быстрого доступа будут null. И это не очевидно.
    GetComponent предполагает, что Вы понимаете что делаете и проверите - а вернул ли он что-нибудь.
    Это уменьшает число ошибок.
    transform оставили потому что он есть всегда
    SEMAK1987Дата: Понедельник, 15 Мая 2017, 19:08 | Сообщение # 8324
    уже был
    Сейчас нет на сайте
    Доброго времени суток, помогите со скриптом // Upgrade NOTE: replaced 'mul(UNITY_MATRIX_MVP,*)' with 'UnityObjectToClipPos(*)'

    // Per pixel bumped refraction.
    // Uses a normal map to distort the image behind, and
    // an additional texture to tint the color.

    Shader "HeatDistort" {
    Properties {
    _BumpAmt ("Distortion", range (0,128)) = 10
    _MainTex ("Tint Color (RGB)", 2D) = "white" {}
    _BumpMap ("Normalmap", 2D) = "bump" {}
    }

    CGINCLUDE
    #pragma fragmentoption ARB_precision_hint_fastest
    #pragma fragmentoption ARB_fog_exp2
    #include "UnityCG.cginc"

    sampler2D _GrabTexture : register(s0);
    float4 _GrabTexture_TexelSize;
    sampler2D _BumpMap : register(s1);
    sampler2D _MainTex : register(s2);

    struct v2f {
    float4 vertex : POSITION;
    float4 uvgrab : TEXCOORD0;
    float2 uvbump : TEXCOORD1;
    float2 uvmain : TEXCOORD2;
    };

    uniform float _BumpAmt;

    half4 frag( v2f i ) : COLOR
    {
    // calculate perturbed coordinates
    half2 bump = UnpackNormal(tex2D( _BumpMap, i.uvbump )).rg; // we could optimize this by just reading the x & y without reconstructing the Z
    float2 offset = bump * _BumpAmt * _GrabTexture_TexelSize.xy;
    i.uvgrab.xy = offset * i.uvgrab.z + i.uvgrab.xy;

    half4 col = tex2Dproj( _GrabTexture, i.uvgrab.xyw );
    half4 tint = tex2D( _MainTex, i.uvmain ); /// <<<<<<< сдесь пишит ошибку
    return col * tint;
    }
    ENDCG

    Category {

    // We must be transparent, so other objects are drawn before this one.
    Tags { "Queue"="Transparent+100" "RenderType"="Opaque" }

    SubShader {

    // This pass grabs the screen behind the object into a texture.
    // We can access the result in the next pass as _GrabTexture
    GrabPass {
    Name "BASE"
    Tags { "LightMode" = "Always" }
    }

    // Main pass: Take the texture grabbed above and use the bumpmap to perturb it
    // on to the screen
    Pass {
    Name "BASE"
    Tags { "LightMode" = "Always" }

    CGPROGRAM
    #pragma vertex vert
    #pragma fragment frag

    struct appdata_t {
    float4 vertex : POSITION;
    float2 texcoord: TEXCOORD0;
    };

    v2f vert (appdata_t v)
    {
    v2f o;
    o.vertex = UnityObjectToClipPos(v.vertex);
    #if UNITY_UV_STARTS_AT_TOP
    float scale = -1.0;
    #else
    float scale = 1.0;
    #endif
    o.uvgrab.xy = (float2(o.vertex.x, o.vertex.y*scale) + o.vertex.w) * 0.5;
    o.uvgrab.zw = o.vertex.zw;
    o.uvbump = MultiplyUV( UNITY_MATRIX_TEXTURE1, v.texcoord );
    o.uvmain = MultiplyUV( UNITY_MATRIX_TEXTURE2, v.texcoord );
    return o;
    }
    ENDCG
    }
    }

    // ------------------------------------------------------------------
    // Fallback for older cards and Unity non-Pro

    SubShader {
    Blend DstColor Zero
    Pass {
    Name "BASE"
    SetTexture[_MainTex] { combine texture }
    }
    }
    }

    }

    Добовляю к материалу он становится не прозрачным а розового цвета ,сам скрипт работает только текстура мешает всей отмосфере.
    QualmerДата: Воскресенье, 21 Мая 2017, 07:36 | Сообщение # 8325
    уже был
    Сейчас нет на сайте
    Я делаю 2Д-рогалик с процедурной генерацией подземелий. С помощью скрипта создается двухмерный массив из мелких квадратиков и в нем рандомные комнаты. В случайной комнате спавнится персонаж, а также прикрепленная к нему камера и интерфейс. Всё спавнится как надо, кроме интерфейса, он постоянно появляется в одном и том же месте(координаты 0,0) независимо от расположения камеры или игрока.
    Реализован интерфейс через канвас с картинками с рендером по камере.
    Помогите, пожалуйста.
    БозингарДата: Среда, 24 Мая 2017, 11:44 | Сообщение # 8326
    почетный гость
    Сейчас нет на сайте
    Проблема с 2d анимацией. Rotation объекта по умолчанию - 0, 0, 0. Через ключевую анимацию (окно Animation) пытаюсь повернуть на -2 градуса (перемещаю полоску кадра в окне Animation, поворачиваю объект на -2 градуса). Вместо этого он кувыркается в обратную сторону на 358 градусов. С пивотами всё нормально, скриптов нет, других видимых причин тоже не замечаю. Первый раз такой хрен.


    #Хийвэл бүү ай, айвал бүү хий.
    EchoITДата: Среда, 24 Мая 2017, 14:24 | Сообщение # 8327
    старожил
    Сейчас нет на сайте
    Бозингар, 358 градусов это то же самое, что -2 градуса. :D

    Долгожданный анонсик: State of War
    БозингарДата: Среда, 24 Мая 2017, 15:56 | Сообщение # 8328
    почетный гость
    Сейчас нет на сайте
    Цитата offtop ()
    Цитата EchoIT ()
    358 градусов это то же самое, что -2 градуса.

    Бесспорно. Но когда мне нужно было освежить знания по геометрии - я пошёл на ресурсы, посвящённые этой тематике. Сюда же пришёл узнать конкретное решение конкретной проблемы, а не выяснять основы тригонометрии. Повторю то, что уже писал многократно на этом форуме: не знаете ответа на вопрос - игнорируйте его. А для блистания остроумием есть пикабу, фишки и куча иных сайтов.


    #Хийвэл бүү ай, айвал бүү хий.
    EchoITДата: Среда, 24 Мая 2017, 16:15 | Сообщение # 8329
    старожил
    Сейчас нет на сайте
    Бозингар, это и есть ответ на твой вопрос. Пища, так сказать, для размышления. А коли ты не хочешь размышлять, а лишь хочешь ответы на все вопросы, то в геймдеве тебе делать нечего. Если тебе что-то не нравится, игнорируй сам. Здесь тебе никто ничем не обязан.

    Долгожданный анонсик: State of War

    Сообщение отредактировал EchoIT - Среда, 24 Мая 2017, 16:16
    DisCrДата: Понедельник, 29 Мая 2017, 13:10 | Сообщение # 8330
    был не раз
    Сейчас нет на сайте
    Здраствуйте, как в самом редакторе Unity можно поставить предмет точно рядом с другим, чтобы они были рядом и милиметра между ними не оставалось? Есть ли в нём какая нибудь привязка к вершинам/рёбрам, как в 3d редакторах?
    AndrewNovakДата: Понедельник, 29 Мая 2017, 16:13 | Сообщение # 8331
    почетный гость
    Сейчас нет на сайте
    Цитата DisCr ()
    Есть ли в нём какая нибудь привязка к вершинам/рёбрам, как в 3d редакторах?

    Выделяешь объект - переходишь в перемещение - зажимаешь кнопку V и тяшешь за вертексы к вертексам другого объекта
    Также есть опция в Edit -> Snap Settings


    COLD DEPTH Steam
    PUSS!
    COLD DEPTH


    Сообщение отредактировал AndrewNovak - Понедельник, 29 Мая 2017, 16:14
    allodsДата: Понедельник, 12 Июня 2017, 18:06 | Сообщение # 8332
    почти ветеран
    Сейчас нет на сайте
    Ребят нужен ответ на вопрос
    Можно ли использовать корутины в таких целях типо таймера ? Как скажется на производительность? Пример

    Код
        IEnumerator randStand(){
      while(true){
       randAnim = Random.Range (0,3);
       yield return new WaitForSeconds (3);
      }
      yield break;
        }


    И других по типу востановления ХП у юнитов каждую секнду +н количество? Или лучше в Update засунуть с таймером ?
    berilДата: Понедельник, 12 Июня 2017, 19:20 | Сообщение # 8333
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата allods ()
    И других по типу востановления ХП у юнитов каждую секнду +н количество? Или лучше в Update засунуть с таймером ?

    Не лутчше, короутином часто заменяют Update и используют его как игровой цикл




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    allodsДата: Понедельник, 12 Июня 2017, 20:16 | Сообщение # 8334
    почти ветеран
    Сейчас нет на сайте
    Цитата beril ()
    Не лутчше, короутином часто заменяют Update и используют его как игровой цикл

    Но если я использую Update для других дел, можно попутно еще корутин так 5 зафигачить? Допустим что таких скриптов будет от 20 до 100 и в каждом по Update и по 5 корутин что я показал выше.
    Просто хочу знать, как сильно влияет на производительность корутины или не стоит с эти париться . Все эти корутины работаю с самого Старта .

    И да все это для мобилок


    Сообщение отредактировал allods - Понедельник, 12 Июня 2017, 20:17
    berilДата: Понедельник, 12 Июня 2017, 23:10 | Сообщение # 8335
    Я не ленивый, я — энергосберегающий
    Сейчас нет на сайте
    Цитата allods ()
    Но если я использую Update для других дел, можно попутно еще корутин так 5 зафигачить? Допустим что таких скриптов будет от 20 до 100 и в каждом по Update и по 5 корутин что я показал выше.
    Просто хочу знать, как сильно влияет на производительность корутины или не стоит с эти париться . Все эти корутины работаю с самого Старта .

    И да все это для мобилок

    в одном скрипте 5 бесконечных циклов на куче обьектов это много. Короутины более прожорлевые и в большом количестве их не стоит использовать. Насколько помню по статье: использование одновременно до 1000 короутинов практически не влияет на производитедьность, это касается вызова в одном фрейме. Если есть задержка WaitForSeconds и подобные им, по идеи даже большое количество короутинов не повлияет на производительность. Но надо тестить все
    И да все это писичная оптимизация, я бы на твоем месте не об оптимизации Update и короутинов думал, а об Random.Range и того, что будет находится внутри короутины :D
    Лично я за короутины, никогда не сталкивался с падением производительности из за них, ну опять же такую конструкция лучше не использовать в большом количестве.

    Код

    while (true)
    {
    yield return null;
    }



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




    Накодил? Убери за собой!
    Инвентарь в Unity(UI)
    Инвентарь в Unity(GUI)
    EchoITДата: Понедельник, 12 Июня 2017, 23:21 | Сообщение # 8336
    старожил
    Сейчас нет на сайте
    Цитата
    ожно ли использовать корутины в таких целях типо таймера ?

    Можно. Нужно ли? Нет. Говно без задач.


    Долгожданный анонсик: State of War
    ProsstoBROДата: Среда, 12 Июля 2017, 03:09 | Сообщение # 8337
    был не раз
    Сейчас нет на сайте
    Всем добрый вечер. Кто-нибудь знает как можно сделать псевдо 3D из спрайтов как тут только в unity??

    Заранее спасибо! ^_^ ^_^


    roma3fonДата: Среда, 12 Июля 2017, 04:47 | Сообщение # 8338
    участник
    Сейчас нет на сайте
    ProsstoBRO, ну самый простой способ написать шейдер смещения слоев по осям в зависимости от расположения камеры.
    EchoITДата: Среда, 12 Июля 2017, 11:38 | Сообщение # 8339
    старожил
    Сейчас нет на сайте
    Цитата
    ProsstoBRO, ну самый простой способ написать шейдер смещения слоев по осям в зависимости от расположения камеры.

    Ваще не самое простое. Далеко не все умеют писать шейдеры. ;)


    Долгожданный анонсик: State of War
    ProsstoBROДата: Среда, 12 Июля 2017, 13:52 | Сообщение # 8340
    был не раз
    Сейчас нет на сайте
    Блин, просто хочется игрушку на android сделать, в гейм мейкере производительность не очень, в unity получше будет, но не хочется использовать 3D

    Поиск:

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