示例#1
0
    // Update is called once per frame

    void Update()
    {
        if (!b_CameraScroll)
        {
            Camera.main.transform.position = Vector3.Lerp(Camera.main.transform.position, new Vector3(Camera.main.transform.position.x, 18 - (i_Floor * f_floorDistance), Camera.main.transform.position.z), 0.5f);
        }

        if (Input.GetKeyDown(KeyCode.Mouse0) && !b_IsPointerInButton)
        {
            //Debug.Log("Down");
            if (!b_IsMouseDown)
            {
                target_GameObject = GetClickedObject();
                if (target_GameObject != null && target_GameObject.gameObject.tag == "PipeLine")  //선택된게 나라면
                {
                    //Debug.Log("MY tag is !!! : " + target_GameObject.gameObject.tag);
                    b_IsMouseDown      = true;
                    target_PipeLine_cs = target_GameObject.GetComponent <PipeLine>();

                    //Debug.Log(target_PipeLine_cs.b_IsPlaced);

                    if (target_PipeLine_cs.b_IsPlaced)
                    {
                        if (target_PipeLine_cs.MyRotState == PipeLine.PipeLine_RotState.PRS_Bottom)
                        {
                            target_PipeLine_cs.MyRotState = PipeLine.PipeLine_RotState.PRS_Left;
                        }
                        else
                        {
                            target_PipeLine_cs.MyRotState++;
                        }

                        b_IsMouseDown = false;
                        target_PipeLine_cs.GetComponent <PipeInfo>().Rotate();
                        target_PipeLine_cs.b_IsWater = false;
                    }
                }
                else
                {
                    b_CameraScroll = true;
                    v_LastMousePos = Input.mousePosition;
                }
            }
        }


        if (Input.GetKey(KeyCode.Mouse0))
        {
            //Debug.Log("Press");
            if (b_IsMouseDown)
            {
                Vector3 v_MousePos; // = Camera.main.ScreenToWorldPoint(Input.mousePosition);//Input.mousePosition;
                                    //v_MousePos = Camera.main.ScreenToWorldPoint(v_MousePos);
                Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;

                if (true == Physics.Raycast(ray, out hit, 30f, i_Tile_LayerMask))
                {
                    v_MousePos = hit.point;

                    target_GameObject.transform.position = new Vector3(v_MousePos.x, -i_Floor * f_floorDistance + 1.2f, v_MousePos.z);
                }
            }
            else if (b_CameraScroll)
            {
                v_CurMousePos  = Input.mousePosition;
                f_ScrollOffset = v_CurMousePos.y - v_LastMousePos.y;
                v_LastMousePos = Input.mousePosition;

                Camera.main.transform.position += new Vector3(0, f_ScrollOffset / 10f, 0);
            }
        }


        if (Input.GetKeyUp(KeyCode.Mouse0))
        {
            if (b_IsMouseDown)
            {
                //Debug.Log("Up");
                b_IsMouseDown = false;

                //GameObject TempPipeLine_GameObject = PipeLine_GameObject;

                Vector3 v_TempPipeLine_Position = SetPipeLinePosition(target_GameObject.transform.position);

                if (v_TempPipeLine_Position != Vector3.zero)
                {
                    //Debug.Log("타겟 정보 : " + target_PipeLine_cs.MyState + " " + target_PipeLine_cs.MyRotState +
                    //          "생성 정보 : " + TempPipeLine_PipeLine_cs.MyState + " " + TempPipeLine_PipeLine_cs.MyRotState);
                    GameObject TempPipeLine_GameObject = PipesSpawn.instance.TakePipeFromPool(v_TempPipeLine_Position);//Instantiate(PipeLine_GameObject, v_TempPipeLine_Position, target_GameObject.transform.rotation);

                    PipeLine TempPipeLine_PipeLine_cs = TempPipeLine_GameObject.GetComponent <PipeLine>();

                    TempPipeLine_PipeLine_cs.v_MyPosition = v_CurPosition;//;
                    TempPipeLine_PipeLine_cs.Exchange_PipeLine_Info(target_PipeLine_cs);
                    TempPipeLine_PipeLine_cs.b_IsPlaced = true;

                    //print(TempPipeLine_PipeLine_cs.gameObject.name);
                    TempPipeLine_PipeLine_cs.GetComponent <PipeInfo>().Placement();

                    PipeLineHealth TempPipeLine_PipeLineHealth_cs = TempPipeLine_GameObject.GetComponent <PipeLineHealth>();
                    TempPipeLine_PipeLineHealth_cs.StartBreaking();

                    target_GameObject.transform.localPosition = Vector3.zero;
                    target_PipeLine_cs.Reset_PipeLine_Info();
                    target_PipeLine_cs.MyState    = PipeLine.PipeLine_State.PS_None;
                    target_PipeLine_cs.b_IsPlaced = false;
                }
                else
                {
                    target_GameObject.transform.localPosition = Vector3.zero;
                }
                target_GameObject = null;
            }


            else if (b_CameraScroll)
            {
                b_CameraScroll = false;

                if (Camera.main.transform.position.y - 18 <= 0)
                {
                    i_Floor = (int)Mathf.Abs(Camera.main.transform.position.y - 18 - 7) / f_floorDistance;
                }
                else
                {
                    i_Floor = 0;
                }

                if (i_Floor > 4)
                {
                    i_Floor = 4;
                }

                ResetPipeLinePosition();
            }
        }
    }