Unity3d OnTriggerExit , aby fungovalo viac krát – Hry – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Unity3d  OnTriggerExit , aby fungovalo viac krát – Hry – Fórum – Programujte.comUnity3d OnTriggerExit , aby fungovalo viac krát – Hry – Fórum – Programujte.com

 

juraj1750
Návštěvník
16. 2. 2020   #1
-
0
-

Zravím

Neviete mi poradiť? Na scéne mám kocku akože miestnosť,ktorá sa volá obývačka a je k nej pridelený Tag:obyvacka. Skript je umiestnený na postavičke,ktorú ovládam a má takýto kód.

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

public class obyvacka : MonoBehaviour {


	// Use this for initialization
	void Start () {
		
	}
	
	// Update is called once per frame
	void Update () {
	}
  void OnTriggerEnter (Collider col)
 {
                
       if(col.tag==("obyvacka")){

              Debug.Log("Vosiel som do obyvacky");	

             }
    
  }  
    
   void OnTriggerStay (Collider col)
 {
                    
       if(col.tag==("obyvacka")){
    
               Debug.Log("Som v obyvacke");	

       }
    
  }
  void OnTriggerExit (Collider col)
 {
                  
       if(col.tag ==("obyvacka")){
   
       Debug.Log("Vysiel som z obyvacky");
       } 

  }     
}


Otázka znie.Ako mám upraviť kód, že keď postava viackrát bude vchádzať do miestnosti, aj vychádzať, aby mi tie funkcie fungovali stále. A nie len vtedy, keď scénu pustím prvýkrát?

ďakujem za rady

Nahlásit jako SPAM
IP: 88.212.36.–
gna
~ Anonymní uživatel
1891 příspěvků
16. 2. 2020   #2
-
0
-

Zkus vyhodit ty ify a v konzoli vypni "collapse".

Nahlásit jako SPAM
IP: 213.211.51.–
juraj1750
Návštěvník
16. 2. 2020   #3
-
0
-

#2 gna
lenže tie if si myslím, že tam chcem mať, že keď vojde napr. do druhej miestnosti napr kuchyňa?

Nahlásit jako SPAM
IP: 88.212.36.–
gna
~ Anonymní uživatel
1891 příspěvků
16. 2. 2020   #4
-
0
-

to je jen na vyzkoušení, abys viděl, co to opravdu dělá

Nahlásit jako SPAM
IP: 213.211.51.–
juraj1750
Návštěvník
17. 2. 2020   #5
-
0
-

#4 gna
Nejako sa mi to podarilo podľa príkladu upraviť. A ešte otázka, že keď vojdem do izby, ako sa dá zistiť či daný objekt sa v miestnosti nachádza alebo sa nenachádza napr. pomenujeme modravaza.

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

public class TriggerTest : MonoBehaviour {

      private bool guitex=false ;
      private bool guitexkuchyna=false;
      private bool guitexchodba=false;
      private bool guitexbyt=false;     
       
       
void FixedUpdate() 
    {
        Vector3 fwd = transform.TransformDirection(Vector3.forward);

        if (Physics.Raycast(transform.position, fwd, 10)) 
            print("There is something in front of the object!");
    }

	void Start () {

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

    
   // private Color m_oldColor=Color.red;
    
  void OnTriggerEnter(Collider coln)
 {
if(coln.tag == "obyvacka2" ){ 
guitex = true;  
 guitexkuchyna=false;   
Renderer render=GetComponent<Renderer>();

	
 // m_oldColor= render.material.color   ;
  render.material.color=Color.green;  

  
    }else if(coln.tag == "kuchyna"){
    Renderer render=GetComponent<Renderer>();

	
 // m_oldColor= render.material.color   ;
  render.material.color=Color.blue;  
    guitex = false;  
 guitexkuchyna=true;  
    }else if(coln.tag == "chodba"){
       guitex = false;  
 guitexkuchyna=false;  
     guitexchodba=true;
    }else if(coln.tag == "byt"){
             guitex = false;  
 guitexkuchyna=false;  
   guitexbyt=true; 
   
    } 
    }     
            
  void OnTriggerExit(Collider coln)
 {                     guitex = false;    
                       guitexkuchyna=false; 
                       guitexchodba=false;
                       guitexbyt=false;          
if(coln.tag == "obyvacka2"){

 Renderer render=GetComponent<Renderer>();
  render.material.color=Color.red;  
 }  
 }  
     
   private GUIStyle guiStyle = new GUIStyle(); //create a new variable
 
    void OnGUI() {

    if (guitex == true )
        {
 // GUI.contentColor = Color.yellow;  //zmena farba textu
 guiStyle.normal.textColor = Color.yellow;//farba hlasky
            guiStyle.fontSize = 20; //change the font size 
 GUI.Label(new Rect(255, 220, 190, 100), "vosiel som do obyvacky",guiStyle);
   
           }else if(guitexkuchyna==true){
     
   guiStyle.normal.textColor = Color.yellow;//farba hlasky
            guiStyle.fontSize = 20; //change the font size 
 GUI.Label(new Rect(255, 220, 190, 100), "vosiel som do kuchyne",guiStyle);         
               guitex =false;  
           }else if( guitexchodba==true){
                 guitex =false; 
     
        guiStyle.normal.textColor = Color.blue;//farba hlasky
            guiStyle.fontSize = 20; //change the font size 
 GUI.Label(new Rect(255, 220, 190, 100), "vosiel som do chodby",guiStyle);
           
           }else if( guitexbyt==true){
             guitex =false;guitexchodba=false;guitexbyt=true; 
 GUI.Label(new Rect(255, 220, 190, 100), "vosiel som do bytu",guiStyle);
           }else{
guiStyle.normal.textColor = Color.red;//farba hlasky
            guiStyle.fontSize = 20; //change the font size 
 GUI.Label(new Rect(255, 220, 190, 100), "", guiStyle);  

           }
    
       }
   
}
Nahlásit jako SPAM
IP: 88.212.36.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 4 hosté

Podobná vlákna

Zkušenosti v Unity3D — založil Michal Krlín

Unity3D komunita — založil BloodRings

Hledáme programátora v C# - Unity3D — založil Stonehenge Games

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý