• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    BYDKUNITY 3D
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    W3R: no pokud se vyslovene nudis, muzes se podivat na dekompilovane zdrojaky (a mam pocit, ze c# cast nakonec unity nekde dali na nahled, protoze jim to stejen vsichni dekompilovali :).
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    JAACOB: podedit imo jde, ale nebude se ti to hlasit jako pridatelna komponenta v editoru, protoze to se bere reflexi. (imo to asi jde, minimalne pro interni pluginy, pridat nekde do inicializace, jako pridatelny skript... a mozna by slo rucnim volanim AddComponent.) otazkou je proc taky.
    W3R
    W3R --- ---
    JAACOB: dik tohle jsem nenasel necet; i kdyz stejne bud nechapu co dela ten rozdil, nebo uz je to nekde v zone blackboxu kde se deje neco co nevidim. A tomu ze to driv slo i verim, protoze kdyz jsem cetl dokumentaci, dosel jsem k zaveru ze je to tak mysleny.

    A jj je to asi ciste zvedavost, MonoBehavioury me nijak neomezuji. Spis kdyz takhle na neco narazim co nechapu, pokud to neni uplne mimo moji uroven snazim se to rozstourat a treba se neco priucit.
    REDSNAKE
    REDSNAKE --- ---
    mimochodem, dokázal by mi někdo prosím objasnit jednu věc? Mám platformu - podlahu pro 2D skákačku. Ta má 2D box collider bez zaškrtnutého trigger. Mám enemy, což je prázdný objekt s box colliderem se zapnutým trigerem kvůli útoku postavy hráče, aby se registrovaly hity. Pokud nastavím enemy box collider 2D s triggerem enemy propadne plošinou. Pokud přiřadím současně objektu enemy box collider s triggerem, současně assetu enemy přiřadím další collider bez triggeru, tak vše funguje jak má. Jen mě zajímá jestli je to takhle správné řešení nebo mi něco uniká?
    JAACOB
    JAACOB --- ---
    W3R: Zajimavej dotaz, chvilku jsem nad tim ted s kolegou stravil. On mi dokonce tvrdil, ze ma za to, ze to v minulych verzich Unity slo (podedit primo z Component / Behaviour). Ja si nejsem uplne jistej, vybavuju si pouze iterovani po Componentach, ne primo dedeni z nich. Narazil jsem ale na jeden post, ktery se to rozumne snazi vysvetlit: https://answers.unity.com/questions/1428657/can-my-scripts-derive-from-behaviour-or-component.html

    Zajimalo by me taky, proc ses k tomu vubec dostal? Chtel jsi tim neco vyresit nebo je to ciste zvedavost?
    W3R
    W3R --- ---
    Mam jedno znalostni okno, kdybyste treba nekdo prosim vedel. A neni to zasadni, ale zajima me to a nevim vlastne spis jak patrat a to nepochopeni si doplnit

    Na zaklade ceho se uniti interni komponenty nabizi jakozto pridatelne v Inspectoru? Nejsou to MonoBehaviory (ted myslim treba collidery nebo rigidbody), jsou odvozene od tridy Component od ktere bych cekal prave to (MonoBehaviour je od ni odvozen tez), ale pokud mam vlastni tridu implementujici Component, pridat jako komponenta nejde
    REDSNAKE
    REDSNAKE --- ---
    JAACOB: Dik, bylo to vskutku tak. Vcera se mi povedlo za pomoci Omnislah dopracovat k tomu samemu zaveru. Vtip byl v tom, ze kdyz jsem pridaval layer objektu enemy, zeptalo se me to zda chci layer enemy priradit i vsem dcerinnym objektum toho objektu. Ve vysledku se tedy vrstva enemy priradila i assetu a to zpusobovalo problemy, protoze asset nemel prideleny script enemy atd.

    Ano, fakt zacinam, teprv si prochazim nejake zacatecnicke tutorialy na c#, takze sotva chapu syntax a dalsi souvislosti, nicmene z yt tutorialu se to da nahazet do unity a zjistit jeee ono to funguje a to je pro me velky hnaci motor.

    Diky za tipy, myslim ze na takovy optimalizace mam jeste spoustu casu. Urcite si chci zkouknout i dalsi tutorialy na collidery, rigidbody a dalsi a jak urcite sam vis, je to casove narocne a zacal jsem s tim v patek.
    JAACOB
    JAACOB --- ---
    REDSNAKE: Kdybych si mel tipnout, mas nejakej bordel v layerech. Over si, ze whatIsEnemies layer mask odpovida enemacum a ze jen a pouze enemaci maji nastaveny tenhle layer, ale nezapomnel jsi ho na jinem gameobjektu. Abys zjistil, presneji kde je problem, prepis si vnitrek toho for cyklu v updatu takhle:

    var enemyCollider = enemiesToDamage[i];
    var enemy = enemyCollider.GetComponent<Enemy>();
    if (enemy == null)
    {
    Debug.LogError("Tenhle objekt nema spravne nastavenej enemy layer: " + enemyCollider.gameObject.name, enemyCollider.gameObject);
    continue;
    }
    enemy.health -= damage;
    /*shake cam a animace utoku*/
    shake.CamShake();
    Instantiate(bloodEffect, transform.position, Quaternion.identity);
    Debug.Log("Cakance krve!!!!!!");

    Beru to tak, ze se fakt ucis zaklady, ale mam tu pro tebe nejake tipy do budoucna:

    Jednak teda neni moc dobry v updatu volat GetComponent<> funkce - jsou pomale. Je o dost lepsi mit enemace cachle v nejakem globalnim listu nebo podobne (ackoliv v tomhle workflow ti to moc nepomuze).

    Takze druhy tip kolem workflow s kolizema - je lepsi nastavit kolizni layery primo v settings (Edit -> Project settings -> Physics). Tam si zadefinujes, ze maji spolu kolidovat treba strely a enemies, pak na gameobjekty strel a enemacu nahazis collidery a Rigidbody2D, budes posouvat vsema objektama jen pres Rigidbody2D (ApplyForce?), protoze to zajistuje spravne fungovani fyziky (a potazmo kolizi) a pak na monobehaviours budes pouzivat OnCollisionEnter2D metodu, ktera ti vystreli automaticky, kdyz dojde ke kolizi mezi nastavenyma koliznima vrstvama.

    Byt tebou, probehnu si nejake tutorialy na Rigidbody(2D?) a collidery + spravny workflow s nima...
    REDSNAKE
    REDSNAKE --- ---
    Mám script kdy player útočí stiskem space a enemy dostává - health. Funguje mi to dost random. Občas to zaregistruje jeden hit, většinou žádný a někdy tři :D
    Random by to být ovšem nemělo, damage je nastaven na 1.

    Script přikládám v příloze, koukám do toho už delší dobu a fakt už nevím.
    Chybová hláška z unity je :"NullReferenceException: Object reference not set to an instance of an object
    PlayerAttack.Update () (at Assets/Scripts/PlayerAttack.cs:30)"

    Nevím si s tím rady, tak kdyby někdo tušil, rád si nechám poradit.

    BYDK
    BYDK --- ---
    JAACOB: AHoj, akorat jsem to chtel postnout. :) Jsou tam bezva veci.
    JAACOB
    JAACOB --- ---
    Jinak uz na Unity YT pribyvaji videa z prednasek (rekordne rychle letos): https://www.youtube.com/playlist?list=PLX2vGYjWbI0RzLRaqsqcgnuc2RvLPTUmi

    A taky je zrovna na humblebundlu docela zajimavej package assetu:
    Humble Unity Bundle 2019 (pay what you want and help charity)
    https://www.humblebundle.com/software/unity-2019-bundle
    REDSNAKE
    REDSNAKE --- ---
    Už to fachčí,dík:)
    REDSNAKE
    REDSNAKE --- ---
    W3R: Dík, už to vidím. Teď pro změnu dostávám jinou chybu :D


    W3R
    W3R --- ---
    podle nahledu vpravo, Setbool > SetBool?
    W3R
    W3R --- ---
    REDSNAKE: v konzoli, AnimControl 26
    REDSNAKE
    REDSNAKE --- ---
    W3R: bohužel mě to neodkazuje na konkrétní řádek.

    REDSNAKE
    REDSNAKE --- ---
    REDSNAKE: boll na bool už mám opraveno:) Ale nefunguje to stále :-/
    REDSNAKE
    REDSNAKE --- ---
    Ahoj, hraju si s unity a narazil jsem na problém. Snažím se rozchodit kostlivce podle tutoriálu https://www.youtube.com/watch?v=JT4J_uKYH3M a asi jsem pitomec, ale vše funguje až na scrip pro klávesy. Tzn script přepíšu dle videa, kontrolovaný xy na chyby a stejně když pustím play tak dostanu chybovou hlášku, že "All compilers errors have to be fixed before you can enter play mode"

    zde je zmíněný skript:

    using System.Collections;
    using System.Collections.Generic;
    using UnityEngine;

    public class AnimControl : MonoBehaviour {

    private Animator mAnimator;

    // Use this for initialization
    void Start () {
    mAnimator = GetComponent<Animator>();
    }

    // Update is called once per frame
    void Update () {

    bool walking = Input.GetKey(KeyCode.W);

    mAnimator.Setboll("walking", walking);

    if(Input.GetkeyDown(KeyCode.A))
    {
    mAnimator.SetTrigger("attack");
    }
    }

    nevidí tam někdo chybu na první dobrou?
    JAACOB
    JAACOB --- ---
    Jinak urcite vite, ze zrovna bezi Unite, tady je keynote ze vcerejska:
    Unite Copenhagen 2019 Keynote
    http://www.youtube.com/watch?v=gyqIZP_zLtU&t=1154
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    ty math utilities jsou na pohled celkem pekny :) kdyz vidim ten vizualizer minkowskeho sumy a gjk a vzpominam si, jak jsem to pred mnoha lety sam rval do vlastniho enginu a dost si trhal vlasy, aby to nejak fungovalo.... to bych tenkrat hodne ocenil jako referenci :)
    JAACOB
    JAACOB --- ---
    BYDK: Jasny, nasypal jsem to taky jen tak z patra s tim, ze se muze nekomu hodit. Budu rad i za dalsi zdroje...
    BYDK
    BYDK --- ---
    JAACOB: Ahoj. Diky za prispevek. Hodil jsem to tam ted narychlo. Cele to jeste projdu... at vim co tam vlastne ted mame. :) Plus pridam nejake dalsi...
    JAACOB
    JAACOB --- ---
    Muzu poprosit ADMINA, aby lehce updatnul nastenku nebo club description? Rad bych tam prihodil nekolik uzitecnych tutorialu / zdroju. Taky budu rad, kdyz i vy nalinkujete vase studnice vedomosti... toho neni nikdy dost! :)

    Miluju tutorialy Sebastiana Lague. Jednoduse, lidsky, zajimave mechaniky, tooly a tutorialy.
    https://www.youtube.com/channel/UCmtyQOKKmrMVaKuRXz02jbQ / https://twitter.com/SebastianLague

    https://www.youtube.com/user/Brackeys
    https://catlikecoding.com/unity/tutorials/
    https://jacksondunstan.com/

    Solidni knihovna plna uzitecnych toolu pro Unity:
    https://github.com/zalo/MathUtilities

    Top vysvetleni audio systemu v Unity - uprimne jsem v tom mel porad mistama trochu gulas. Tohle je must read, jestli se nekdo chce aspon trochu seriozne zaobirat zvukem v Unity:
    https://johnleonardfrench.com/articles/10-unity-audio-tips-that-you-wont-find-in-the-tutorials/

    Redblob neni vylozene Unity dev, ale ma luxusni blog s klasickyma hernima systemama a vychytavkama:
    https://www.redblobgames.com/

    Par dasich accountu, ktere si myslim, ze stoji za to sledovat:
    https://twitter.com/AlanZucconi
    https://twitter.com/OskSta
    https://twitter.com/minionsart / https://www.patreon.com/posts/tutorial-list-10663597

    Klidne bych tam prihodil i tu stranku na assety ve sleve.

    Nasel bych toho mozna i vic, ale tyhle kousky jsem vytahl taknejak z hlavy po tom, co jsme se s kolegama bavili o par channelech na obede...
    ROLAND
    ROLAND --- ---
    Našel by se zde ochotný programátor, který by měl chuť v unity udělal výzkumný obchod.
    Jedná se asi celkem o 260 řádků obsahujících až 7 údajů pro 10 objektů.
    Více v poště.
    Díky.
    BYDK
    BYDK --- ---
    Nasel jsem stranku, kde se daji zakoupit assety ve slevach. Snad nekomu poslouzi.

    Asset Deals for Unity
    https://www.gameassetdeals.com
    FREELA
    FREELA --- ---
    BYDK:
    JAACOB:
    SHIGORBIRDMAN:

    to dava smysl, diky moc
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    rucni vypocet bude v podstate delat uplne presne to same - zjisteni relativni pozice a rotace vuci prvnimu hristi (cili transformace z world do hriste local space) a pak zpetne transformovat z local noveho hriste do world space.

    pokud z nejakeho duvodu nemuze byt hrac v hierarchii a nechce se ti pocitat, muzes pouzit prasarnu s nejakym dummy objektem, ktery budes parentovat misto nej a pro hrace zkopirujes jeho world pos / rot
    SHIGORBIRDMAN
    SHIGORBIRDMAN --- ---
    FREELA: v tomhle pripade mi prijde nejjednodussi, jak uz bylo receno (a pokud to teda muzes udelat), opravdu parentnout hrace na to hriste a pak mu proste jen nastavoval localpos a localrot podle libosti relativne vuci hristi. cili pred spawnem dalsiho hriste si vzit localpos / localrot a po spawnu dalsiho je proste pouzit
    JAACOB
    JAACOB --- ---
    FREELA: jestli ti jde jen o rotace v ose Y, teoreticky by ti pro to mely stacit euler angles. Zjisti si eulerY prvniho hriste, eulerY prvniho hrace, udelej mezi nima rozdil (relativni natoceni hrace ke hristi) a pak u druheho hriste otoc noveho hrace stejne relativne k eulerY druheho hriste... To je takove polopaticke.

    Pak me napada, za predpokladu, ze by hrac byl v hierarchii primo pod hristem, pouzit transform.localRotation, coz by mela byt relativni rotace vzhledem k parentovi - tedy po spawnu noveho hriste by melo stacit predat novemu hraci stejnou hodnotu local rotation.

    Da se to ale resit i primo pres quaterniony, akorat v tom mam dodneska trochu bordel, tak ted mozna budu placat: Mam pocit, ze odectenim dvou quaternionu dostavas relativni rotaci, kterou pak muzes vynasobit jinej quaternion (mozna jeho Quaternion.Inverse hodnotu?) a melo by si to sednout. Ale tohle ted taham trochu z paty. Vim, ze jsem s tema operacema vzdycky chvilku valcil a ve finale zjistil, ze je na to, co potrebuju, nejakej daleko jednodussi postup...
    Kliknutím sem můžete změnit nastavení reklam