//플레이어가 벤트를 타서 사라지게 해줌 //위치에따라 화살표를 보여줘야함 //나올때 화살표를 안보여주고 //플레이어가 벤트에서 나와 다시 보여줘야함 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; } }
//상호작용 객체(배열)들과 플레이어 객체 사이의 거리에 따른 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); } } } }