C# проблема в скриптах Unity

265
07 июля 2017, 03:37

Код - часть проекта игры на Unity, и проблема в том, что когда игрок пропускает 3 зомби или убивает 1 человека, игра должна останавливаться. До этого я успешно использовал такую реализацию, но тут что-то не так. В упор не вижу что.

public class Ain_on_human : MonoBehaviour 
{ 
    //public GameObject restart; 
    public static bool lose_h=false; 
    private void Awake() 
    { 
        lose_h = false; 
    } 
    void OnBoxCollider(Collider2D trig) 
    { 
        // Update is called once per frame 
        if (trig.gameObject.tag == "Aim") 
        {                 
           lose_h = true; // когда становитса тру то во 2 скрипте состояния тру должно считыватса ифом но такого нет... 
 
          // restart.SetActive(true); 
        }           
    } 
} 
 
//------------------------------------------- 
using UnityEngine; 
 
public class player : MonoBehaviour  
{     
    public static bool kill = false; 
    public static bool lose = false; 
    private float num;               // counter zombies 
    public GameObject restart; 
    private void Awake() 
    { 
        lose = false; 
    } 
 
    void OnTriggerEnter2D (Collider2D other) 
    { 
        if (other.gameObject.tag == "zombe_0") 
        { 
            num++; 
            if (num >= 3) 
            { 
                 lose = true; 
            } 
        } 
        //  Ain_on_human end; 
       
        if (Ain_on_human.lose_h == true)  
        // problem  когда я обращаюсь к состоянию переменной  
        // и сравниваю ее с тру то стопаю всю игру  
        // (нужно так ибо 2 условия проиграша).  
        // Но оно не выполняет данную проверку , либо она всегда фолс...  
        // почему так  .. ибо до етого в программе уже юзал подобный подход 
        { 
            lose = true; 
        } 
        if (lose==true) 
        { 
            restart.SetActive(true); 
        } 
    }    	 
}

Прошу прощения за громоздкость, но оно не очень сложное, надеюсь. Может, я протыкал в чем-то банальном.. Да и я в курсе, что, наверное, код подал не правильно. Просто не смог нормально инкапсулировать в сообщения, потому сделал так.

Answer 1

Я во всем разобрлса , if не может не работать ибо он прост как гильотина , все дело было немного в другом , в 1 скрипте обратите внимания на OnBoxCollider а должно быть OnTriggerEnter2D (используются для отслеживания состояния тригера (тега)) для того что б изменить состояния ststic bool lose во 2 скрипте нужно исправить 1 :

void OnTriggerEnter2D(Collider2D trig) 
    { 
         
        if (trig.gameObject.tag == "human") 
        { 
            player.lose = truе;// set true in 2 scripts 
        } 
       

READ ALSO
C# как заставить Class Library использовать свой App.config

C# как заставить Class Library использовать свой App.config

Имеется консольное приложение, которое через рефлексию инстанцирует класс (с определенным интерфейсом) из проекта Class Library

276
Как можно вывести полученный url через WebView Unity 3d

Как можно вывести полученный url через WebView Unity 3d

Ситуация такая, url который требуется выводится в DebugLog (http_response

259