Peršokti į turinį
  • ŽAIDIMAI
  • , ŽAIDIMAI
  • ŽAIDIMAI

[Unity/C#][Help] OnTriggerEnter, kaip reaguoti i masyva game objektu?


xvivax

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3183 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Recommended Posts

Sveiki,

Is esmes turiu masyva game objektu ir naudoju juos paeiliui. Bandau padaryti kad kai pirmas objektas (test[0]) paliecia trigeri, atsiranda antras objektas(test[1]) ir t.t. Tam naudoju OnTriggerEnter funkcija, bet kaskodel jinai man neveikia su gameObject masyvu. Klausimas:
Kaip nurodyti OnTriggerEnter funkcijai game objekta kuris turi buti tikrinamas su trigeriu?

 

const int i = 10;
gameObject[] test = new gameObject[i];

int k = 0; //skaiciuoja objektus

//Sukuriam test[k] objekta random pozicijoje zaidime.

void OnTriggerEnter(Collider other)
{
  //palietej zeme/trigeri, sustok
  if(test[k].gameObject.tag == "FLOOR")
  {
   isActive = false;
  }
}

void Update()
{
  if(isActive == false)
   {
     k++;
     test[k] = // vel sukuriam objekta random pozicioje
    }
}

Kodas nera sintaksiskai tvarkingas, tik norejau parodyti esme, ka bandau padaryti.

Nuoroda į komentarą
Dalintis per kitą puslapį

Kodel tu kuri array paprasta ? o ne arraylist, nes dabar jei pasieksi 10 tj gg wp, o pas tave non-stop jie pildosi.

Taip pat klausimas tu cia kuri FLOOR ? nes kaip matau tikrini ar test[0] tag'as lygus "FLOOR" , jei nori tikrint ar liecia FLOOR tas objektas kuriam tu idejas 'scripta' manau reiketu daryti other.gameObject.tag == "FLOOR"

ArrayList test = new ArrayList();

void OnTriggerEnter(Collider other)
{
  if(other.gameObject.tag == "FLOOR")
  {
   isActive = false;
  }
}

void Update()
{
  if(isActive == false)
   {
     gameObject newobj;
     newobj = Instantiate(original, position, rotation
     test.add(newobj);
    }
}

Nezinau ar cia 100% tikslu.

Redaguota , nario .Ignas
Nuoroda į komentarą
Dalintis per kitą puslapį

kad suveiktu triger visu pirma colideris turi tureti trigger varnele uzdeta, visu antra i trigeri patenkantis elementas turi tureti rigitbody elementa ir trecia nelabai suprantu ka cia tikrini ar tagas floor. ar tu kartais nenori tiktint ar i trigeri patekes objektas turi tag "floor". jei taip tai turetum tikrint kaip ir virsui patare other.gameObject.tag o ne savo k elemento tag

 

Papildyta:

 

Kai pasaukiamas OnTriggerEnter tau automatiskai perduodamas reference i ta objecta -> Collider other. is to 'other' gali prisikast prie paties gameObject ir ptie transform. siaip trigger colider dek dek ant floor o rigitbody ant elementu masyve, dar prie game elementu masyve gali pridek kokia custom klase kuria uzpildai su id unikaliu tam elementui ir tada tikrini ta id.

const int i = 10;
gameObject[] test = new gameObject[i];

int k = 0; //skaiciuoja objektus

//Sukuriam test[k] objekta random pozicijoje zaidime.

void OnTriggerEnter(Collider other)
{
  //palietej zeme/trigeri, sustok


 // if(test[k].gameObject.tag == "FLOOR") cia kazkas ne taip
  if(other.gameObject.tag == "FLOOR")
  {
// PRIE KITO ELEMENTO GALI PEREIT TAM PACIAM METODE, NELAUK UPDATE NES JIE SAUKIAMI NETOLYGIAI
      k++;
      k%=i; // APSAUGA KAD NEISLIPTUM IS MASYVO

      Instaniate(test[k],pozicija, Quaterion.Identity); // Sukuriam k objekta random pozicioje

  }
}
Redaguota , nario Rmbdeivis
Nuoroda į komentarą
Dalintis per kitą puslapį

Su tuo other.gameObject.tag == "Floor" buvot teisus, rasiau tema darbe skubedamas tai vat taip ir isejo  8|

Kai pasaukiamas OnTriggerEnter tau automatiskai perduodamas reference i ta objecta -> Collider other. is to 'other' gali prisikast prie paties gameObject ir prie transform
Turejai omeni kad galiu prisikast prie trigerio objekto? Nes jei taip tai ne to man reikia, as noriu prisikasti prie pacio OnTriggerEnter. Noriu zinoti koki objekta jis siuo metu seka. Nes jei sukursiu iskartu du objektus kurie palies "floor" tai kuri is tu dvieju objektu apdoros OnTriggerEnter?

siaip trigger colider dek dek ant floor o rigitbody ant elementu masyve

Taip ir padaryta

dar prie game elementu masyve gali pridet kokia custom klase kuria uzpildai su id unikaliu tam elementui ir tada tikrini ta id.

Sito nesupratau 8|  Ka man tikrinti ir kam? Jei gali paaiskink issamiau.

Beje noriu pabrezti jog visa tai darau atskiram gameObject'e, o ne paciam prefabe. Ta prasme ne tam paciam gameObjekte kuris juda ir iesko trigerio.

Nuoroda į komentarą
Dalintis per kitą puslapį

Man sunku suprast ko tu klausi.

 

Kaip suprantu turi Empty su situo kodu. Tarkim jis pavadintas game manager.

Ant jo i masyva per editor esi sumetes 10 skirtingu prefabu.

 

Taip pat scenoje turi floor su tag FLOOR ir trigger coolideriu.

 

Game manager gamina game objektus is masyvo. Kai kas nors paliecia floor nori apie tai informuot game manager?

 

onTriggerEnter isauna kiekviena karta kai kas nors i ji patenka. jei pateks 2 elementai iskarto isaus 2 kartus su skirtingais reference ir OnTriggerEnter saukiamas ant objekto kuris turi trigeri. tavo sukurti objektai nekvies onTriggerEnter, onTriggerEnter bus issauktas skripte kuris prisegtas prie Floor objekto.

Redaguota , nario Rmbdeivis
Nuoroda į komentarą
Dalintis per kitą puslapį

(redaguota)

onTriggerEnter isauna kiekviena karta kai kas nors i ji patenka. jei pateks 2 elementai iskarto isaus 2 kartus su skirtingais reference ir OnTriggerEnter saukiamas ant objekto kuris turi trigeri. tavo sukurti objektai nekvies onTriggerEnter, onTriggerEnter bus issauktas skripte kuris prisegtas prie Floor objekto.

Aisku. Klaida padariau nes onTriggerEnter prisegiau prie game managerio. Padariau savaip, idejau onTrigerEnter i prefaba ir atrodo viskas veikia.

Dekui!  :)

Redaguota , nario viva
Nuoroda į komentarą
Dalintis per kitą puslapį

Puiku. Gal ir ant prefabu esi uzdejes trigger colider del to ir suveikia.

Na is tiesu tai ne visai taip. Prefabas turi rigidbody, colilideri(su isjungtu isTrigger) ir onTriggerEnter. Floor objektas turi collideri su ijungtu isTrigger.

Bet vistiek viska pakeiciau kaip sakiai, nes kazkaip teisingiau yra uzdeti koda ant vieno objekto nej anto n- kiekio prefabu :)

Nuoroda į komentarą
Dalintis per kitą puslapį

Ši tema yra neaktyvi. Paskutinis pranešimas šioje temoje buvo prieš 3183 dienas (-ų). Patariame sukurti naują temą, o ne rašyti naują pranešimą.

Už neaktyvių temų prikėlimą galite sulaukti įspėjimo ir pranešimo pašalinimo!

Prisijungti prie diskusijos

Palikti atsakymą galite iš karto, o užsiregistruoti vėliau. Jeigu jau turite paskyrą mūsų forume, Prisijunkite.

Svečias
Atsakyti šioje temoje...

×   Įklijuotas tekstas turi teksto formatavimą.   Pašalinti teksto formatavimą

  Galimi tik 75 veidukai.

×   Nuoroda buvo automatiškai įterpta.   Įterpti nuorodą paprastai

×   Jūsų ankstesnis pranešimas buvo atkurtas.   Išvalyti redaktorių

×   Jūs negalite įkelti nuotraukas tiesiogiai.Įkelkite arba įdėkite nuotraukas iš URL.

  • Šiame puslapyje naršo:   0 nariai

    • Nėra registruotų narių peržiūrinčių šį forumą.

Skelbimai


×
×
  • Sukurti naują...