játékfejlesztés.hu
FórumGarázsprojectekCikkekSegédletekJf.hu versenyekKapcsolatokEgyebek
Legaktívabb fórumozók:
Asylum:    5479
FZoli:    4893
Kuz:    4455
gaborlabor:    4449
kicsy:    4304
TPG:    3402
monostoria:    3284
DMG:    3172
HomeGnome:    2919
Matzi:    2526

Pretender:    2498
szeki:    2440
Seeting:    2306
Geri:    2195
Orphy:    1893
Joga:    1791
Bacce:    1783
MaNiAc:    1735
ddbwo:    1654
syam:    1491
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] > 8 < [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [56]
Lord_Crusare - Törzstag | 1312 hsz       Online status #208372   2015.09.28 17:04 GMT+1 óra  
Hogy megcsinálod az animatort minden egyes karakterre.

   
Viperion - Tag | 540 hsz       Online status #208371   2015.09.28 16:27 GMT+1 óra  
Animációk kezelésére az animatort használom de mindeggyik karakter képes ugrani futni rúgni stb és az a problémám,hogy mindeggyik karakternek az animátorban meg kell,hogy csináljam ugyanazt a struktúrát de minek. Felesleges ugyanazt megcsinálni kétszer vagy többször szerintem.
Gondoljatok csak bele,hogy van ilyen 20 karakter a játékban és mindeggyiknek az animátorban meg kell csinálnotok ugyanazt. Szerintem ez olyan időpazarlás. Az is probléma,hogy minden karakter tud olyat amita másik nem. Ezért az sem lehetséges opció,hogy csinálok egy animaciót az animatorban amit az összesre alkalmazni lehetne.

Mia megoldás erre a problémára?

   
Slyrfecso - Tag | 44 hsz       Online status #208370   2015.09.28 13:46 GMT+1 óra  
Sziasztok!
Van ötletetek arra, hogy az EventSystemhez, hogyan lehet hozzáadni inventory icon-okat?
Raycastal azonosítom a gameobject-et, majd az inventory icon-okkal változtatom a színét, azonban ha egy icon alatt van egy objectum, akkor a slot/icon-on keresztül is működik a raycast amit nem szeretnék.
Az EventSystem-et a scene-re raktam és nincs "First Selected GameObject", mivel az az inventory elemei.



Kód:
if ( Input.GetMouseButtonDown(0))
{

if(EventSystem.current.IsPointerOverGameObject()) return;

ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if(Physics.Raycast(ray, out hit))
{
if(hit.collider.tag == "Player")
{
objects = hit.collider.gameObject;
}
}

}





Kód:
if (objects != null)
{

Renderer[] rendererComponents = objects.GetComponentsInChildren<Renderer>();
foreach (Renderer component in rendererComponents)
{
if(component.tag == "Butorlap Objects List")
{
int index = inventory[i].butorlapID;
component.GetComponent<Renderer>().material.mainTexture = texturesButorlap[index];
}

}
}

   
Lord_Crusare - Törzstag | 1312 hsz       Online status #208357   2015.09.27 15:04 GMT+1 óra  
Ha jól értem, van egy HUD-od a jelenetben, és erre kellene hivatkoznia sok prefabnak -- ez egyszerű. Állíts be egy "tag"-et a HUD-nak ( mondjuk pl. "HUD" ), majd a GameObject.FindGameObjectWithTag eljárással keresd meg ezt az objektumot és tárolj rá egy referenciát. Így minden prefab a létrejöttekor megkeresi a HUD-ot és tud rá hivatkozni.

Fontos: a FindGameObjectWithTag relatíve lassú művelet, így kizárólag a "Start"-ban hívd meg.

   
sarakrael - Tag | 14 hsz       Online status #208356   2015.09.27 14:20 GMT+1 óra  
Van egy Canvas, amit egy script által vezérelek, és ez egy prefabhoz van kötve. Egyszerre több prefab is van a pályán, és csak úgy működnek helyesen, ha szülő gyermek kapcsolatban vannak a prefabbal. Azonban van egy másik script, ami nincs ehhet a prefabhoz kötve, mert ez a HUD-ot vezérli, és azért nem lehet abban a másik scriptben, mert akkor a hud is annyiszor megjelenne, ahány prefab van, és hibásan működne tapasztalataim szerint. Azonban vannak olyan dolgok, amik a Canvasban történnek, és ez kihatással van a HUD-ra is és ilyenkor kellene az, amit írtam. Ennél jobban sajnos nem tudom leírni, sajnálom, még kezdő vagyok.

Amit írtál, hogy prefab referenciákat beállítani, azokat hogy tudok?

   
Instalok - Tag | 603 hsz       Online status #208355   2015.09.27 08:58 GMT+1 óra  
Nem teljesen értem. Mihez kellenek mindkét scriptből változók? A script arra való, hogy vezérelj vele dolgokat, azaz, ha két különböző scriptnek odaadod ugyan azt az objektumot, akkor ugyan azt tudod vele vezérelni. Tényleg nem értem, hogy mit is szeretnél pontosan...

A prefab esetén meg természetesen eltűnnek azok az objektumok, amik az adott jelenetben léteznek csak. Gondolj bele, a prefab-et másik jelenetben is példányosítani tudod, ahol esetleg nincsenek meg a keresett objektumok. Tehát általános szabályként elmondható, hogy prefab nem fog jelenetbeli objektumokat tárolni. Más prefab referenciákat természetesen be tudsz neki állítani.

   
sarakrael - Tag | 14 hsz       Online status #208354   2015.09.27 08:02 GMT+1 óra  
Idézet
Instalok :
Staticcal azért nem működik, mert a static nem objektumhoz tartozik. Miért nem húzod simán azt a canvast a másik scriptbe?



Mindkét scriptből kellenek hozzá változók, és nem rakhatom csak úgy át, mert az egyik scriptben az állandó HUD van, a másikban meg egy olyan UI, ami szülő gyermek kapcsolatban van egy prefabbal, ami csak akkor jelenik meg, ha az a játéktérben van, és aktiválom. mellesleg ha átrakom, akkor a probléma ugyanúgy fennáll, csak fordítva.

Akkor konkrétan lehetelen scripten belül egy canvast hozzárendelni egy public static canvashoz?

+ lenne még egy kérdésem:
ha valamit behúzok prefabnak, és utána azt kihúzom a játéktérbe, akkor a hozzá tartozó scriptből eltűnnek a hozzárendelt public gameobjectek (remélem érthetően fogalmaztam ). Hogyan tudom megoldani, hogy azok megmaradjanak?

Ezt a hozzászólást sarakrael módosította (2015.09.27 08:12 GMT+1 óra, ---)

   
Instalok - Tag | 603 hsz       Online status #208353   2015.09.26 22:40 GMT+1 óra  
Staticcal azért nem működik, mert a static nem objektumhoz tartozik. Miért nem húzod simán azt a canvast a másik scriptbe?

   
sarakrael - Tag | 14 hsz       Online status #208352   2015.09.26 20:31 GMT+1 óra  
Sziasztok!
Több canvas-t is használok és a scriptben úgy szerepelnek hogy:

public canvas scriptNeve;

Majd a Unitiben a scriptnél betudom húzni azt a canvast amit használni akarok a scripthez. Azonban az egyik canvast egy másik scriptben is használni akarok, ezért hozzá kellett biggyesztenem a static szót így:

public static scriptNeve;

Így viszont a Unitynél nem jelenik meg, így nem is tudtam behúzni, ezért NullReferenceException hibaüzenetet kaptam.

Azt szeretném kérdezni tőletek, hogy hogyan tudom azt megoldani, hogy megjelenjen a Unityben úgy hogy odaírom a staticot, vagy esetleg scripten belül hogyan tudnám a canvast hozzárendelni.

Ja és c#-ban írom a scriptet.

   
Viperion - Tag | 540 hsz       Online status #208317   2015.09.16 16:21 GMT+1 óra  
A deltaposition az a legfrisebb és az előző képernyő érintés pozíciónak a külömbsége akar lenni?

   
Slyrfecso - Tag | 44 hsz       Online status #208307   2015.09.15 15:45 GMT+1 óra  
Húú nagyon jó vagy, jópárszor megcsináltam korábban az első megoldásod, de mivel nem azt kaptam amit szerettem volna ezért átugrottam, pedig a hiba máshol keresendő.

A hiba a betöltésben volt, amit az alábbiakban módosítottam, hozzáteszem 2 sör és egy pálinka után
megnyílt az elmém)))
Nem tudom ti hogy vagytok vele, de van, hogy napokig, hetekig, igen hetekig csak próbálgatom a kódokat, majd utána kérdezek és valaki rávezet a helyes útra. 14 éve dolgozom grafikusként, fotózom, 3D-zek, de a programozást csak két hónapja kezdtem el autódidakta módon és 100x jobban tetszik mindennél))
Az amikor egy kód működik hihetetlen eufólia...
Na ennyit a csöpögésről jöjjön a kóóód:

Kód:
foreach(Prefabs obj in prefabData) {

GameObject myPrefab = Resources.Load("Prefabs/"+obj.name) as GameObject;
GameObject spawnedObject = Instantiate<GameObject>(myPrefab);
spawnedObject.transform.position = obj.savedPos;
spawnedObject.transform.rotation = obj.savedRot;
spawnedObject.name = spawnedObject.name.Replace("(Clone)","").Trim();
spawnedObject.name = spawnedObject.name.Replace("U","Ü").Trim();
}


Kipróbálható működés közben is a project a korábbi hozzászolásomban lévő linken.
A következő lépcső a MySQL-be való mentés lesz.
Nagyon szépen köszönöm a segítséget.

Ezt a hozzászólást Slyrfecso módosította (2015.09.15 18:14 GMT+1 óra, ---)

   
Instalok - Tag | 603 hsz       Online status #208303   2015.09.15 13:27 GMT+1 óra  
Amit esetleg megtehetsz, az az, hogy edit-time névhez rendeled a prefab referenciát, valahogy így:
Kód:
[CreateAssetMenu]
public class ObjectList : ScriptableObject
{
    [System.Serializable]
    public class ObjectInfo
    {
        public string name;
        public GameObject prefab;
    }
   
    [SerializeField]
    private List<ObjectInfo> objects = new List<ObjectInfo>();
}

Ennek a segítségével létrehozol egy assetet. Az assetet kijelölve kézzel ki tudod tölteni az adatokat, amely tartalmaz egy id-t meg egy prefab hivatkozást. Ezt az assetet használva már tudsz instantiate-et hívni, így a mentés része nem sokat módosul, csak nem az objektum nevét kell elmenteni, hanem az id-t, amihez az ő prefabje tartozik.

Nézz rá a ScriptableObject-re, hogy hogyan és mire lehet használni. Vagy, ahogy lentebb írtam, Asset bundle vagy Resources folder.

   
Instalok - Tag | 603 hsz       Online status #208302   2015.09.15 13:20 GMT+1 óra  
Nézem a kódot, de nem teljesen értem, hogy mit csinálsz, és hogy mit szeretnél csinálni. Van egy statikus current változód a Prefabs osztályban, amit mindig felülírsz a legutolsó megtalált Player taggel ellátot objektummal. Emellett ugyebár nem tudsz "csak úgy" név alapján objektumot létrehozni. Ehhez vagy a Resources folderbe kell tenned, hogy be tudd tölteni, vagy AssetBundle-t kell használnod. Ha viszont csak az a kérdés, hogy hogyan gyűjtöd össze az adatokat, akkor valami ilyesmi kell neked (nem próbáltam ki, notepad-ben írtam...)
Kód:
[System.Serializable]
public class PrefabData
{
    public string name;
    public Vector3 position;
    public Quaternion rotation;
}

public class User
{
    private List<PrefabData> prefabData = new List<PrefabData>();

    private void SaveObjects()
    {
        GameObject[] objects = GameObject.FindGameObjectsWithTag("Player");
        foreach (GameObject go in objects)
        {
            PrefabData data = new PrefabData();
            data.name = go.name;
            data.position = go.transform.position;
            data.rotation = go.transform.rotation;
           
            prefabData.Add(data);
        }
    }
}

   
Slyrfecso - Tag | 44 hsz       Online status #208301   2015.09.15 12:40 GMT+1 óra  
Beleraktam az előzőbe, bocsi.

   
Instalok - Tag | 603 hsz       Online status #208300   2015.09.15 11:05 GMT+1 óra  
Én nem látom a linket

Dictionary-t akkor kell (érdemes) használni, ha valamit kulcs alapján akarsz megkeresni, mert (általában) egy rendezett fában tárolja az adatokat, így a keresési idő maximum a fa mélységével egyenlő, ami logn-es időt jelent.

Egyébként ez pontosan mire kell neked, lehet van más megoldás is.

   
Slyrfecso - Tag | 44 hsz       Online status #208299   2015.09.15 11:00 GMT+1 óra  
Sziasztok!

A projektemben szeretném elmenteni a gameobject-eket a nevük, pozíciójuk és forgásuk alapján.
Az első talált objektumot el tudom menteni és visszatölteni a fentiekkel, de az összes gameobject-et szeretném.
List vagy Dictionariest kellene használnom?
A scripteket az alábbi linken találjátok, elnézést, hogy nem ide teszem, de nem szerettem volna teleszemetelni. Ebbe az add() metódusba beleőrülök, remélem tudtok segíteni.
Előre is köszönöm.

U.I.: a string replace szenzációóóóós, köszönöm. Főleg azért mert mielőtt elmentem az objectumok nevét átnevezem, majd visszatöltés után újra)))

Lista

Ezt a hozzászólást Slyrfecso módosította (2015.09.15 12:40 GMT+1 óra, ---)

   
Instalok - Tag | 603 hsz       Online status #208295   2015.09.15 02:54 GMT+1 óra  
Ehhez két dolgot kell értened: mi az a delta és mi az a position

Ezt a hozzászólást Instalok módosította (2015.09.15 04:10 GMT+1 óra, ---)

   
Viperion - Tag | 540 hsz       Online status #208294   2015.09.15 02:46 GMT+1 óra  
Srácok mi az a touch.deltaposition nem bírok rájönni hiába ott a doksiban nem megy.
El tudnátok mondani úgy,hogy az én nehéz felfogású agyamnak ez ne okozzon komoly kihívást?

Arra gondoltam,hogy olyasmi mint a deltatime de akkor semmi értelme a deltapositionnak mert,akkr ez ugyanaz mintha azt csinálnám,hogy folyamatosan meghívom a touch.position-t.

   
Instalok - Tag | 603 hsz       Online status #208282   2015.09.12 09:31 GMT+1 óra  
Akkor használj esetleg valamilyen string replace-t (pl. az ü-t uu-ra cseréled). Bár ez okozhat ütközést, ami ugye nem lenne valami jó.

   
Slyrfecso - Tag | 44 hsz       Online status #208281   2015.09.12 09:08 GMT+1 óra  
Instalok igazad van a file-elnevezéseket illetően, azonban ha a termékkódban is szerepel, amit nem tudok megváltoztatni, akkor meg kell oldanom, hogy ékezetesen jelenjen meg.

Nem egy szép megoldás, de a slotokba külön be tudom tölteni az ékezetes file-okat:
Kód:
public Texture2D newIcon353;
...
inventory10[2].itemIcon = newIcon353;

   
Tunyu - Tag | 450 hsz       Online status #208279   2015.09.11 23:45 GMT+1 óra  
Instalok :
Elméletileg a Network.InitializeSecurity() használata után a szerver és kliens közötti kommunikáció titkosított csomagokban történik, így akár sima text-ként is mehet az adat. A hash tudtommal nem visszafejthető csak ütköztethető,erre léteznek szerverek ahol így megtudhatjuk pl. egy MD5 hash-nak a valós értékét, de ezek általában egyszerű szavak. Ha viszont egy egyszerű szó kap egy kis toldalékot(sót) és úgy generálod a hash-t,akkor már jelentősen csökken az ütközés veszélye.
Ez szerintem bejelentkezési adatok tárolására és összehasonlítására a szerver oldalon teljesen elegendő.
Ha titkosított adatot akarsz tárolni ami vissza is fejthető, akkor a jelszóból generálj egy hash-t amit fel tudsz használni egy titkosító algoritmus kulcsaként amit a titkosítás után törölhetsz is.

   
Instalok - Tag | 603 hsz       Online status #208278   2015.09.11 20:50 GMT+1 óra  
Előfordulhat, hogy nem jól kezeli, viszont egyébként sem érdemes ékezetes fájlneveket használni. Gondolj bele, ha olyan helyre kerül a szoftvered, ahol nincs ez a nyelv telepítve, akkor milyen karakterek kerülnek oda? Szerintem egyszerűen használj angol abc-t.

   
Slyrfecso - Tag | 44 hsz       Online status #208277   2015.09.11 20:08 GMT+1 óra  
Ezt egy jelnek veszem amit írtál, mert még rám is vár az ügyfelek regisztrálása.
A hasselt secretKey-en kívül még én sem találtam biztonságosabb megoldást.

Elnézést, hogy a kérdésed megválaszolása előtt kérdést teszek fel, de bízom benne, hogy
mindketten kapunk választ.

Az inventory-mban az ékezetes icon-ok nem jelennek meg.
Encode-olásra sok megoldást találtam, de vagy nem jól alkalmazom, vagy Unity bugról van szó.
Az ékezetes file-neveket nem tölti be, ha a nevük stringben van tárolva.
A Unity fórumon részleteztem, de ha valaki találkozott már ilyen problémával, jó lenne ha segítene:
Accented character

   
Instalok - Tag | 603 hsz       Online status #208276   2015.09.11 19:01 GMT+1 óra  
Jelszóküldést azt hogy érdemes megcsinálni szerintetek? Az oké, hogy nem plain textként tárolom az adatbázisban a jelszót, hanem legalább hashelem, viszont, ha a hashelés belekerül a kódba (amely, mint tudjuk könnyen visszafejthető, lásd ILSpy), akkor a hálózaton elküldött hashelt kód visszafejthető az eredeti jelszóvá könnyedén. Vagy valami ilyesmi.

   
Slyrfecso - Tag | 44 hsz       Online status #208274   2015.09.10 10:53 GMT+1 óra  
Az új inventory lista működik, úgyhogy minden oldalnak saját listája van.
Köszönöm szépen ez egyenlőre működik, magamra szedek egy kis tudást és utána újra írom a scripetet hurkokkal együtt.




Kód:
...
public List<Item> inventory11 = new List<Item>();
...
inventory11.Add (new Item());
...

// PAGE 11 BEGIN ----------------------------------------------

if (PAGE11)
{

inventory11[0] = database.items[551];


GUI.BeginGroup(new Rect(20, 80, 430, 530));
if (GUI.Button (new Rect (0, 0, 100, 20), "" ,buttonBack ))
{
PAGE1 = true;
PAGE11 = false;


}

GUI.Label(new Rect(105, 0, 200, 20), "09. Székek, forgószékek" ,pageHeaderStyle); //PAGE 11


int j = 0;
Event slotEvent = Event.current;

for (int y = 0; y < slotsY; y++)
{
for (int x = 0; x < slotsX; x++)
{
Rect slotRect = new Rect(0+x*105, 25+y*80, 100, 75);
GUI.Box (slotRect, "", skin.GetStyle ("Slot"));
slots[j] = inventory11[j];

if (slots[j].itemName != null)
{
GUI.DrawTexture(slotRect,slots[j].itemIcon);
if (slotRect.Contains(Event.current.mousePosition))
{
tooltip = CreateTooltip(slots[j]);
showTooltip = true;

if(slotEvent.isMouse && slotEvent.type == EventType.mouseDown && slotEvent.button == 0 )
{

Instantiate (inventory11[j].itemPrefab);
print ("Clicked " + j);

}

}



}
if(tooltip == "")
{
showTooltip = false;
}

j++;

}

}





GUI.EndGroup();
}

// PAGE 11 END ----------------------------------------------

Ezt a hozzászólást Slyrfecso módosította (2015.09.10 12:54 GMT+1 óra, ---)

   
Slyrfecso - Tag | 44 hsz       Online status #208273   2015.09.10 10:33 GMT+1 óra  
Köszönöm szépen ezt már próbáltam, mindkét esetben hibaüzenettel elszáll.
Idézet
Parameter name: index
System.Collections.Generic.List`1[Item].set_Item (Int32 index, .Item value) (at /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Collections.Generic/List.cs:639)
Inventory.DrawInventory () (at Assets/script/Inventory/Inventory.cs:1076)
Inventory.OnGUI () (at Assets/script/Inventory/Inventory.cs:100)


Viszont igazad van, hogy felülírja az előző elemeket és vagy új listát, vagy törölnöm kell az inventory betöltött elemeit.
Van ötleted mi lehet a hiba?

   
Tunyu - Tag | 450 hsz       Online status #208272   2015.09.09 23:12 GMT+1 óra  
Azért marad meg az előző listából is meg elem, mert nem törlöd az előző elemeket hanem csak felülírod.Egy új oldalra lépésnél vagy hozz létre egy új listát pl.:
Kód:
inventory = new List<Item>();
vagy simán ürítsd ki a meglévőből pl.:
Kód:
inventory.Clear();
parancsal, és ez után mehet bele az új adatbázis elemek.
Kb így
Kód:
if (PAGE2)
{
inventory.Clear();
inventory[0] = database.items[0];
inventory[1] = database.items[1]; ...


Ha nem külön-külön töltenéd fel minden egyes index helyét hanem használnál 1-2 hurkot jelentősen csökkenthetnéd a script méretét is.

   
Slyrfecso - Tag | 44 hsz       Online status #208271   2015.09.09 16:22 GMT+1 óra  
Nagyon köszönöm, nagyon jó ötlet, sajnos ennél bonyolultabb amire szükségem van, mert a gombokat különböző néven kell elneveznem azokat pozicionálnom kell. Ezt az előzőekben írtak alapján meg is oldottam.

Tunyu ha tudsz abban segíthetnél, hogy miért hagyja kirajzolva azokat az elemeket, amik a másik inventoryban üres helyek?
(huu ezen sokat gondolkoztam, nem sikerült leírnom jobban, de ha kipróbáljátok a projektemet, rögtön érthető lesz
http://terberendezo.alexbutor.hu
user: a
pass: a
3. szék ikon
03 és 01-es termékcsaládok közötti váltás során látható, hogy a 22. slotnak üresnek kellene lennie, de kirajzolja a 03-as termékcsalád 22. slot tartalmát.
A többi termékcsaládban az üres helyekre üres képeket töltöttem, be de ez azért nem jó, mert látszólag üres slotok fölé húzva megjelenik a Tooltip.

Bármi ötletet szívesen vennék.
Az inventoryt ide nem másolom be, mert baromi hosszú lenne, de a Unity forumon az alábbi linken megtekinthető.
http://forum.unity3d.com/threads/how-to-add-multiple-pages-in-inventory.352700/

   
Tunyu - Tag | 450 hsz       Online status #208270   2015.09.09 10:44 GMT+1 óra  
Kód:
public List<GameObject> selectedItems;
private string[] str;
private int selected = 0;
void Start(){
selectedItems = new List<GameObject>();
}
void OnGUI() {
str = new string[selectedItems.Count];
for(int i = 0; i< selectedItems.Count;i++){
str[i] = selectedItems[i].name;
selected = GUI.SelectionGrid(new Rect(0,0,Screen.width,Screen.height),selected,str,7);
}
}

Így az aktuális darabszámnak megfelelően hozza létre a gombokat,jelen esetben egy sorban 7 gombot, de ez lehet 5 vagy 10 is.

Ezt a hozzászólást Tunyu módosította (2015.09.09 22:36 GMT+1 óra, ---)

   
Slyrfecso - Tag | 44 hsz       Online status #208269   2015.09.09 07:44 GMT+1 óra  
Megoldottam, úgyhogy minden elem pozicióját külön sorba írtam, majd a csoportokat if (pageX) aktív tölti csak be. Minden oldalnak külön ciklusa van.
Abban segíthetnétek, hogy a slots-okat hogyan lehet törölni, mert ha az egyik csoportban kevesebb elem van, akkor az előző csoportból ott marad az üres helyeken.
Továbbá vannak olyan helyek a gridben, amit szándékosan átugrottam.

Végső megoldásként, amit nem szeretnék, egy azonos üres elemet betölthetnék, de ez további 100 sort jelent

Remélem tudtok segíteni.

   
Slyrfecso - Tag | 44 hsz       Online status #208265   2015.09.08 12:22 GMT+1 óra  
Sziasztok!

Egy kis segítséget kérnék ismét. Egy inventoryban szeretnék oldalakat létrehozni, amikhez külön állítanám be az adatbázis elemeit.

ItemDatabase (0-250 id-s elemet tartalmaz, amelyek 50-esével csoportosíthatóak és külön oldalon megjeleníthetőek.)
Kód:
// Use this for initialization
void Start () {
for (int i = 0; i < (slotsX * slotsY); i++)

{
slots.Add(new Item());
inventory.Add (new Item());

}
database = GameObject.FindGameObjectWithTag("Item Database").GetComponent<ItemDatabase>();
//COMFORT TERMÉKEK
inventory[0] = database.items[0];



Egy ilyen kódot találtam, de nem tudom az enyémre átírni.
Kód:
pages.Add (newItem());

(pages[2] as ItemGridPage).SetSlotItem(0, 0, database.items[0]);

   
Matzi - Szerkesztő | 2526 hsz       Online status #208197   2015.08.28 22:25 GMT+1 óra  
Projektor. Csak akkor rajzolod ki amikor azok vannak, amikre hatnia kell, aztán rajzolod a többit.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Instalok - Tag | 603 hsz       Online status #208196   2015.08.28 20:22 GMT+1 óra  
Igazából nem kijelölésre kell, azt inkább csak példának hoztam.

   
Tunyu - Tag | 450 hsz       Online status #208195   2015.08.28 19:49 GMT+1 óra  
Ha nem fontos hogy alatta legyen, csak simán hozzá kell adni egy halo-t minden kijelölt objektumhoz.

   
Instalok - Tag | 603 hsz       Online status #208194   2015.08.28 18:37 GMT+1 óra  
Ti hogyan csinálnátok egy olyan "markert", ami követi az alatta lévő terepet? Valamilyen projektív textúrázás kellene nekem valószínűleg. Viszont nem terrain-specifikus kellene, mert modelleken is állhat a játékos (aki alatt lenne ez a jelzés). Olyasmire gondolok, mint a stratégiai játékokban az egységek kijelölését mutató jel az adott egység alatt. Vagy hasonló, mint ez.

Például projectorral, és valahogy szűrni, hogy mire ne vetítsen?

   
Viperion - Tag | 540 hsz       Online status #208139   2015.08.22 10:01 GMT+1 óra  
Az unity weboldalán letöltéseknél az additional downloads alatt abuilt in shaders az micsoda?
Extra shader csomag amit nem tartalmaz az additional downloads alatti 32 bites unity telepítő?

   
mogul - Tag | 153 hsz       Online status #208131   2015.08.21 01:04 GMT+1 óra  
lehetséges, de a charcontrollerét (aminek saját fizikája van). lehet sima capsulecolliderrer+rigidbody hogy velocity vagy addforce ammi mozgassa. addforce-szal nekem egész jól kijött. talán mert nem áll meg azonnal, így van átmenet a futó/járó - álló között.

tunyu, van ott a physics matrix-nél olyan h raycast affecting on trigger colliders v hasonló (hacsak nem együtt használod, valszeg nem erről van szó). nem használsz translate-t? akkor nem működik a fizika. és mindkét ütközőn collider kell legyen.

   
Viperion - Tag | 540 hsz       Online status #208129   2015.08.19 17:00 GMT+1 óra  
A charactercontroller.move a velocity-t állítgassa így mozgassa az objektumot?

   
FZoli - Szerkesztő | 4893 hsz       Online status #208124   2015.08.19 06:35 GMT+1 óra  
nem, valószínűleg azért törétnik, mert nem vagy körültekintő. A fizikai enginnel óvatosan kell interaktolni, nem mindegy, hogy és mikor akarod változtatni az állapotukat. A doksi nagyon szépen leírja ezt, próbáld ezt az olvasás dolgot.
   
Tunyu - Tag | 450 hsz       Online status #208123   2015.08.19 06:25 GMT+1 óra  
Nem kizárt hogy valamit én rontok el, de nálam nem működik az ütközés detektálás.
A Physics.Raycast() működik de se az OnTriggerEnter() se az OnCollisionEnter(). Ha isTrigger be van kapcsolva áthaladnak egymáson az objektumok de akkor sem észleli az ütközést. Rigidbody van.Régen működött, most mit rontok el!?

   
Viperion - Tag | 540 hsz       Online status #208122   2015.08.19 01:40 GMT+1 óra  
Én ezt nem értem.
Nyugodtan próbáljátok csak,ki hogy ha csináltok egy plane objektet és egy kockát aminek lesz rigidbodyja is majd ha translatelod,folyamatosan lefelé ,akkor pattogni fog míg át nem esik a plane objektumon.

Vagy ez azért nem történik mert a charactercontroller move metódusa többet csinál mint a translate metódus?

   
Matzi - Szerkesztő | 2526 hsz       Online status #208121   2015.08.19 00:14 GMT+1 óra  
Viperion:
Oda van írva fölé szépen:
"...the motion will only be constrained by collisions. It will slide along colliders."
Ami ékes magyarra fordítva azt jelenti, hogy azért nem esik át a talajon, mert azt a fizikai rendszer elintézi, hogy ne menjenek át egymáson. Szóval a válasz a kérdésedre az, hogy a script nem hibás, csak nem vettél figyelembe egy kitételt, amit odaírtak.
If your game idea starts with the story it’s not a game idea.
Stories in games are optional.
   
Viperion - Tag | 540 hsz       Online status #208120   2015.08.18 22:53 GMT+1 óra  
A gravitáció az ami lent tarja a talajon de ha tovább csökkented az y értékét mint ahol a talaj van,akkor át megy rajta nem? Ez logikus. Ezért ha a talajon van az objekt ,akkor ez nem futhat le vagy ha miden áron le akarjuk,hogy fusson ,akkor kell oda azaz air változó amit oda írtam.

   
Tunyu - Tag | 450 hsz       Online status #208119   2015.08.18 22:40 GMT+1 óra  
Szerintem pont ez az ami lent tartja a talajon!

   
Viperion - Tag | 540 hsz       Online status #208101   2015.08.14 16:07 GMT+1 óra  
http://docs.unity3d.com/ScriptReference/CharacterController.Move.html
Itt a doksiban ez a script nem hibás?
A forráskód ezen része mindig lefut:
Kód:
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);

,akkor is ha a játékos nem ugrik ezért a gravitáció átt fogja vinni a talajon nem?

Kéne oda egy byte változó ami számon tartaná,hogy éppen a levegőben van e vagy sem és akkor Így kéne hogy legyen nem:?
Kód:
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public float speed = 6.0F;
    public float jumpSpeed = 8.0F;
    public float gravity = 20.0F;
    // Ha a földön van ,akkor értéke 0 ha levegőben,akkor pedig 1.
    private byte isInAir = 0;
    private Vector3 moveDirection = Vector3.zero;
   
    void Update() {
        CharacterController controller = GetComponent<CharacterController>();
        if (controller.isGrounded) {
            moveDirection = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
            moveDirection = transform.TransformDirection(moveDirection);
            moveDirection *= speed;
            isInAir = 0;
            if (Input.GetButton("Jump")) {
                moveDirection.y = jumpSpeed;
                isInAir = 1;
            }
        }
        moveDirection.y -= isInAir * gravity * Time.deltaTime;
        controller.Move(moveDirection * Time.deltaTime);
    }

Ezt a hozzászólást Viperion módosította (2015.08.18 03:27 GMT+1 óra, ---)

   
mogul - Tag | 153 hsz       Online status #208097   2015.08.13 00:54 GMT+1 óra  
Idézet
Slyrfecso :

ABBAN kérném még a segítségeteket, hogy két Box Colider érintkezése esetén a visszaérkezési pont
az egyik felénél legyen.




transform (mint reference nem jó? position = position?)
vagy distance kettő között (mármint collider.pos és hit.point) és megfelezed?

   
FZoli - Szerkesztő | 4893 hsz       Online status #208094   2015.08.12 06:31 GMT+1 óra  
normalizálnod kell a képek méretét.

2D elemek méretét neked kell normalizálni. Egy olyan koorináta térbe kell őket beleméretezned ahol a kéeprnyő pozíciót nem picelben, hanem [0,0]-[1,1] float értékek között adod meg, ahol a [0,0] az egyik sarok, a [1,1] pedig az átellenes

3D elemekkel ez eleve nem létezik a probléma, ott screenspaceba transzformálsz mindent, majd raszterizálsz, egy kocka minden felbontáson azonos méretű lesz a "monitorodban". Ha fogsz egy plane-t és a kamera elé tszed, ráhúzol egy textúrát, az nem fog kilógni különbőzú felbontású képernyőkön, csak ha amonitor képeránya is eltér.

Ezt a hozzászólást FZoli módosította (2015.08.13 07:01 GMT+1 óra, ---)
   
Tunyu - Tag | 450 hsz       Online status #208093   2015.08.12 05:55 GMT+1 óra  
Már miért lenne butaság!? Egy 25000x11000 pixel felbontású képet is meg tudsz nézni egy normál monitoron, az más tészta hogy mekkora a memória igénye, de ebbe a képbe bele tudsz zummolni lényegében és úgy végig pásztázhatod akár 200x120 -as felbontáson is.Vagy léteznek olyan alkalmazások unity store-ban is, amik kezelik a HD képeket úgy hogy távolról kisebb felbontást mutat és ahogy közeledsz, úgy akár a repedéseket is megnézheted a falon például.

   
Pixi - Tag | 206 hsz       Online status #208091   2015.08.11 21:27 GMT+1 óra  
Egyértelmű, hogy lebutított, kicsinyített mását látod, hisz amit a kijelző és/vagy a beálított felbontás fizikailag korlátoz, azt te csak szoftveresen tudod belegyömöszölni, ez pedig abból áll, hogy a 2000x2000-es képnek te egy 20x20-as mását látod a monitoron, vagy pedig nem kicsinyíted a kirajzolandó textúra méretét, hanem végigpásztázod 20x20-as lépésekben, bár utóbbi elég nagy idiótaság.

   
Viperion - Tag | 540 hsz       Online status #208090   2015.08.11 21:18 GMT+1 óra  
Igen erre gondoltam. És ott egyik hozzászólásba volt írva,hogy egy 20x20 as ablakban is elférhet egy fullhd kép.
De nem értem,hogy egy fullhd kép,hogyan férhet el pl egy 20x20 ablakban.
Ez csak úgy lehet ,higy veszt a felbintásából nem?

Tehát ha 20x20 pixeles a windows ablak,akkor az azt jeknti,hogy 20x20 pixelből ál.
Egy fullhd kép pedig ettől rengetegszer több,akkor hogyan férhet bele?

   
Frissebbek | Korábbi postok
[1] [2] [3] [4] [5] [6] [7] > 8 < [9] [10] [15] [20] [25] [30] [35] [40] [45] [50] [55] [56]