Exemplo n.º 1
0
    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;
            }
        }
    }
Exemplo n.º 2
0
    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();
            }
        }
    }
Exemplo n.º 3
0
    IEnumerator PressNothingImpl()
    {
        currentState = eTouchState.PRESS_NOTHING;
        while (true)
        {
            //선택된 히어로가 있으면 돌아간다
            if (SelectedHero != null)
            {
                SelectedHero.transform.position = SelectedHero.defaultPos;
                this.SelectedHero = null;
            }
            yield return(null);

            break;
        }
    }
Exemplo n.º 4
0
    //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;
        }
    }