IEnumerator DragImpl() { currentState = eTouchState.DRAG; while (true) //화면을 누르고있는상태 { yield return(null); Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);//Plane에 쏘는레이 RaycastHit hit; var layerMask2 = 1 << LayerMask.NameToLayer("Plane"); Debug.DrawRay(ray.origin, ray.direction * 1000, Color.cyan, 1f); if (Physics.Raycast(ray, out hit, 100, layerMask2))//Plane과 충돌 확인 { if (SelectedHero != null) { var point = hit.point; point.y += 1.5f; SelectedHero.transform.position = point; //내 멤버변수의 히어로의 위치를 터치가 바닥과 닿은곳에서 y는 1.5만큼 떨어진 곳으로 이동한다. } } else { //Plane과 터치하지 않았으므로 되돌아간다 SelectedHero.transform.position = SelectedHero.defaultPos; SelectedHero = null; break; } } }
IEnumerator PressImpl() { currentState = eTouchState.PRESS; while (true) { yield return(null); //터치하면 레이를 쏜다 Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; Debug.DrawRay(ray.origin, ray.direction * 1000, Color.green, 1f); var layerMask = 1 << LayerMask.NameToLayer("Hero"); if (Physics.Raycast(ray, out hit, 100, layerMask)) //영웅 레이어에 쐈을때 감지되는가? { Debug.Log($"PressImpl: Hit:{hit.transform.gameObject.GetComponent<TestHero>()}"); SelectedHero = hit.transform.gameObject.GetComponent <TestHero>(); OnDragHero(); break; } else { OnPressNothing(); } } }
IEnumerator PressNothingImpl() { currentState = eTouchState.PRESS_NOTHING; while (true) { //선택된 히어로가 있으면 돌아간다 if (SelectedHero != null) { SelectedHero.transform.position = SelectedHero.defaultPos; this.SelectedHero = null; } yield return(null); break; } }
//btnRollHero 보이기 private void DisPlayHeroRandButton() { HeroToRoll = SelectedHero; if (SelectedHero) { lbHeroDm.text = "선택한 영웅 공격력 : " + SelectedHero.data.damage.ToString(); lbHeroAs.text = "선택한 영웅 공격속도 : " + SelectedHero.data.atkSpeed.ToString(); } btnRollHero.gameObject.SetActive(true); if (SelectedHero.data.type > 5) { btnRollHero.gameObject.SetActive(false); } if (HeroToRoll != null) { var pos = HeroToRoll.defaultPos + Vector3.up * 3 + Vector3.forward * 2f; Vector3 v = Camera.main.WorldToScreenPoint(pos); v.x = (v.x / Screen.width) * 1080; v.y = (v.y / Screen.height) * 1920; btnRollHero.transform.localPosition = v - new Vector3(1080 / 2, 1920 / 2, 0) - 50 * Vector3.up; } }