• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    BYDKUNITY 3D
    REDSNAKE
    REDSNAKE --- ---
    Zřejmě je to tím, že gameObject SpawnPoint(Místo pro respawn po spadnutí z plošinky) a SceneManager(Objekt se skripty pro odečítání zdraví, hlídání výšky na ose Y, atd) není součástí charakteru. Což o to, SceneManager můžu připnout na hráče a pak funguje script na odečítání zdraví a výšky na ose y i v dalším lvlu, nicméně pokud samozřejmě hierarchicky přiřadím pod charakter i SpawnPoint, tak ten se pohybuje s Charakterem, takže respawn pak sice funguje, ale charakter se respawnuje na nějaké nesmyslné souřadnice ovlivněné pádem a posunem SpawnPointu.

    Prostě, potřeboval bych zřejmě přiřadit charakteru GameObject SpawnPoint a nějak docílit toho, aby byl součástí charakteru, ale nepohyboval se spolu s ním.

    Nevíte jak na to prosím?
    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?
    Kliknutím sem můžete změnit nastavení reklam