Exemplo n.º 1
0
    //플레이어가 벤트를 타서 사라지게 해줌
    //위치에따라 화살표를 보여줘야함
    //나올때 화살표를 안보여주고
    //플레이어가 벤트에서 나와 다시 보여줘야함
    public void Use_Vent(VentObject obj)
    {
        posPlayer = nearbyObject.transform.localPosition;
        player.transform.localPosition = posPlayer;
        if (isItVented)
        {
            joystick.SetActive(true);
            ChangeButtonUI(true);
            for (int i = 0; i < numOfArrow; i++)
            {
                Arrow[i].SetActive(false);
            }
            controll.ventState = "Down To Up";
            coroutine          = VentState(controll.ventState);
            StartCoroutine(coroutine);
            isItVented = false;
        }
        else
        {
            joystick.SetActive(false);
            ChangeButtonUI(false);
            if (obj.objectType == VentObject.ObjectType.Basketball)
            {
                Arrow[2].SetActive(true);
                if (arrowButton[2].onClick != null)
                {
                    arrowButton[2].onClick.RemoveAllListeners();
                }
                arrowButton[2].onClick.AddListener(() => Arrow_Right_Function(0));
            }
            else if (obj.objectType == VentObject.ObjectType.LakeUpper)
            {
                Arrow[2].SetActive(true);
                Arrow[6].SetActive(true);

                if (arrowButton[2].onClick != null)
                {
                    arrowButton[2].onClick.RemoveAllListeners();
                }
                arrowButton[2].onClick.AddListener(() => Arrow_Right_Function(1));

                if (arrowButton[6].onClick != null)
                {
                    arrowButton[6].onClick.RemoveAllListeners();
                }
                arrowButton[6].onClick.AddListener(() => Arrow_Left_Function(1));
            }
            else if (obj.objectType == VentObject.ObjectType.Security)
            {
                Arrow[6].SetActive(true);
                if (arrowButton[6].onClick != null)
                {
                    arrowButton[6].onClick.RemoveAllListeners();
                }
                arrowButton[6].onClick.AddListener(() => Arrow_Left_Function(2));
            }
            else if (obj.objectType == VentObject.ObjectType.Mart)
            {
                Arrow[6].SetActive(true);
                if (arrowButton[6].onClick != null)
                {
                    arrowButton[6].onClick.RemoveAllListeners();
                }
                arrowButton[6].onClick.AddListener(() => Arrow_Left_Function(3));
            }
            else if (obj.objectType == VentObject.ObjectType.LakeLower)
            {
                Arrow[2].SetActive(true);
                Arrow[6].SetActive(true);

                if (arrowButton[2].onClick != null)
                {
                    arrowButton[2].onClick.RemoveAllListeners();
                }
                arrowButton[2].onClick.AddListener(() => Arrow_Right_Function(4));
                if (arrowButton[6].onClick != null)
                {
                    arrowButton[6].onClick.RemoveAllListeners();
                }
                arrowButton[6].onClick.AddListener(() => Arrow_Left_Function(4));
            }
            else if (obj.objectType == VentObject.ObjectType.ParkingLot)
            {
                Arrow[2].SetActive(true);
                if (arrowButton[2].onClick != null)
                {
                    arrowButton[2].onClick.RemoveAllListeners();
                }
                arrowButton[2].onClick.AddListener(() => Arrow_Right_Function(5));
            }
            else if (obj.objectType == VentObject.ObjectType.Hospital)
            {
                Arrow[5].SetActive(true);
                Arrow[7].SetActive(true);
            }
            else if (obj.objectType == VentObject.ObjectType.Cemetery)
            {
                Arrow[0].SetActive(true);
                Arrow[1].SetActive(true);
            }
            else if (obj.objectType == VentObject.ObjectType.Library)
            {
                Arrow[3].SetActive(true);
                Arrow[4].SetActive(true);
            }
            controll.ventState = "Up To Down";
            coroutine          = VentState(controll.ventState);
            StartCoroutine(coroutine);
            isItVented = true;
        }
    }
Exemplo n.º 2
0
    //상호작용 객체(배열)들과 플레이어 객체 사이의 거리에 따른 UI변경 메소드
    public void btwPlayerAndVent(Vector3 posPlayer, GameObject[] vents)
    {
        Vector3 posVent;

        min       = 100.0;
        distances = new double[numOfVent];
        for (int i = 0; i < numOfVent; i++)
        {
            posVent = vent_interactions[i].location;
            double distance = calcDistance(posPlayer, posVent);
            distances[i] = distance;

            if (distances[i] > 20.0f)
            {
                //오브젝트 태두리 설정
                ventBorder         = vents[i].GetComponent <SpriteOutline>();
                ventBorder.enabled = false;
                //오브젝트 컬러 설정
                ventImage       = vents[i].gameObject.GetComponent <SpriteRenderer>();
                ventImage.color = normal;
            }
            else if (distances[i] <= 20.0f && distances[i] > 15.0f)
            {
                //오브젝트 태두리 설정
                ventBorder         = vents[i].GetComponent <SpriteOutline>();
                ventBorder.enabled = true;
                //오브젝트 컬러 설정
                ventImage       = vents[i].gameObject.GetComponent <SpriteRenderer>();
                ventImage.color = normal;
            }
            else
            {
                //오브젝트 태두리 설정
                ventBorder         = vents[i].GetComponent <SpriteOutline>();
                ventBorder.enabled = true;
                //오브젝트 컬러 설정
                ventImage       = vents[i].gameObject.GetComponent <SpriteRenderer>();
                ventImage.color = red;
                ChangeButtonUI(true);
            }

            if (min > distances[i])
            {
                min          = distances[i];
                nearbyObject = vents[i];
            }
            if (i == numOfVent - 1)
            {
                if (min <= 15.0f)
                {
                    ChangeButtonUI(true);

                    VentObject paramObject = nearbyObject.gameObject.GetComponent <Vent_InteractObject>().ventObject;

                    if (ventButton.onClick != null)
                    {
                        ventButton.onClick.RemoveAllListeners();
                    }
                    ventButton.onClick.AddListener(() => Use_Vent(paramObject));
                }
                else
                {
                    ChangeButtonUI(false);
                }
            }
        }
    }