Пример #1
0
    // Update is called once per frame
    void Update()
    {
        // the first time you click down
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                gameObjToDrag = hit.collider.gameObject;

                positionSet = gameObjToDrag.GetComponent <PositionSetting>();

                dragObjectOriginal = gameObjToDrag.transform.position;

                touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                offset        = touchWorldPos - dragObjectOriginal;

                if (objToBeNear != null)
                {
                    Vector3 distanceToObj = touchWorldPos - objToBeNear.transform.position;

                    Debug.Log("distance to object is: " + distanceToObj);
                    Debug.Log("abs x is: " + Mathf.Abs(distanceToObj.x));
                    Debug.Log("abs y is: " + Mathf.Abs(distanceToObj.y));

                    if (Mathf.Abs(distanceToObj.x) < distanceAllowable && Mathf.Abs(distanceToObj.y) < distanceAllowable)
                    {
                        draggingMode = true;
                    }
                    else
                    {
                        draggingMode = false;
                    }
                }
                else
                {
                    draggingMode = true;
                }
            }
        }

        // if you continue to hold the click down
        if (Input.GetMouseButton(0))
        {
            if (draggingMode)
            {
                touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                v3target      = touchWorldPos - offset;
                gameObjToDrag.transform.position = new Vector3(v3target.x, v3target.y, dragObjectOriginal.z);
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            draggingMode = false;
        }
    }
Пример #2
0
        public void Execute(string[] param)
        {
            Coordinates = this.coordinateRepository.Last();
            var cmd = Enum.Parse <ECommand>(param[0].ToUpper());

            if (cmd != ECommand.PLACE && Coordinates == null)
            {
                logger.LogError("Please make a placement first.");
                return;
            }

            switch (cmd)
            {
            case ECommand.REPORT:
                this.Report();
                break;

            case ECommand.PLACE:
                var clean = this.validator.IsValid(param);

                if (clean == null)
                {
                    return;
                }

                this.Place(int.Parse(clean[1]), int.Parse(clean[2]), Enum.Parse <EDirection>(clean[3].ToUpper()));
                break;

            case ECommand.MOVE:
            case ECommand.LEFT:
            case ECommand.RIGHT:
                Settings = this.settingRepository.Setting(Coordinates.F);
                ExecuteAction(cmd);
                break;

            default:
                logger.LogError("Command was not found " + cmd);
                break;
            }
        }
    // Update is called once per frame
    void Update()
    {
#if UNITY_EDITOR
        if (Input.GetMouseButtonDown(0))
        {
            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if (Physics.Raycast(ray, out hit))
            {
                tools = hit.collider.gameObject;
                if (tools == GameObject.FindGameObjectWithTag("tools"))
                {
                    positionSet = tools.GetComponent <PositionSetting>();

                    dragObjectOriginal = tools.transform.position;

                    touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                    offset        = touchWorldPos - dragObjectOriginal;

                    //print ("-------------------------------");
                    //print ("mouse position " + Input.mousePosition);
                    //print ("mouse world position " + touchWorldPos);
                    //print ("camera position " + Camera.main.transform.position);
                    //print ("GameObject position " + tools.transform.position);

                    dragging = true;
                }
            }
        }

        if (Input.GetMouseButton(0))
        {
            if (dragging && tools == GameObject.FindGameObjectWithTag("tools"))
            {
                touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                v3target      = touchWorldPos - offset;
                //print ("v3 target " + v3target);
                tools.transform.position = new Vector3(v3target.x, v3target.y, dragObjectOriginal.z);
            }
        }

        if (Input.GetMouseButtonUp(0))
        {
            dragging = false;
            if (tools == GameObject.FindGameObjectWithTag("tools"))
            {
                tools.transform.position = startingPos;
            }
        }
                #endif

        foreach (Touch touch in Input.touches)
        {
            switch (touch.phase)
            {
            case TouchPhase.Began:
                Ray ray = Camera.main.ScreenPointToRay(touch.position);

                if (Physics.Raycast(ray, out hit))
                {
                    tools = hit.collider.gameObject;

                    if (tools == GameObject.FindGameObjectWithTag("tools"))
                    {
                        positionSet = tools.GetComponent <PositionSetting>();

                        dragObjectOriginal = tools.transform.position;

                        touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 0));
                        offset        = touchWorldPos - dragObjectOriginal;

                        //print ("-------------------------------");
                        //print ("mouse position " + Input.mousePosition);
                        //print ("mouse world position " + touchWorldPos);
                        //print ("camera position " + Camera.main.transform.position);
                        //print ("GameObject position " + tools.transform.position);

                        dragging = true;
                    }
                }
                break;

            case TouchPhase.Moved:
                if (dragging && tools == GameObject.FindGameObjectWithTag("tools"))
                {
                    touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 0));
                    v3target      = touchWorldPos - offset;
                    //print ("v3 target " + v3target);
                    tools.transform.position = new Vector3(v3target.x, v3target.y, dragObjectOriginal.z);
                }
                break;

            case TouchPhase.Ended:
                dragging = false;
                if (tools == GameObject.FindGameObjectWithTag("tools"))
                {
                    tools.transform.position = startingPos;
                }
                break;
            }
        }
    }
    // Update is called once per frame
    void Update()
    {
        #if UNITY_EDITOR

        if(Input.GetMouseButtonDown(0)){

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

            if(Physics.Raycast (ray, out hit)){

                tools = hit.collider.gameObject;
                if(tools == GameObject.FindGameObjectWithTag("tools")){
                    positionSet = tools.GetComponent<PositionSetting>();

                    dragObjectOriginal = tools.transform.position;

                    touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                    offset = touchWorldPos - dragObjectOriginal;

                    //print ("-------------------------------");
                    //print ("mouse position " + Input.mousePosition);
                    //print ("mouse world position " + touchWorldPos);
                    //print ("camera position " + Camera.main.transform.position);
                    //print ("GameObject position " + tools.transform.position);

                    dragging = true;
                }
            }
        }

        if(Input.GetMouseButton(0)){
            if(dragging && tools == GameObject.FindGameObjectWithTag("tools")){
                touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x, Input.mousePosition.y, Input.mousePosition.z));
                v3target = touchWorldPos - offset;
                //print ("v3 target " + v3target);
                tools.transform.position = new Vector3(v3target.x, v3target.y, dragObjectOriginal.z);
            }
        }

        if(Input.GetMouseButtonUp(0)){
            dragging = false;
            if(tools == GameObject.FindGameObjectWithTag("tools")){
            tools.transform.position = startingPos;
            }
        }

        #endif

        foreach (Touch touch in Input.touches){

            switch(touch.phase) {
            case TouchPhase.Began:
                Ray ray = Camera.main.ScreenPointToRay(touch.position);

                if(Physics.Raycast (ray, out hit)){

                    tools = hit.collider.gameObject;

                    if(tools == GameObject.FindGameObjectWithTag("tools")){
                        positionSet = tools.GetComponent<PositionSetting>();

                        dragObjectOriginal = tools.transform.position;

                        touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 0));
                        offset = touchWorldPos - dragObjectOriginal;

                        //print ("-------------------------------");
                        //print ("mouse position " + Input.mousePosition);
                        //print ("mouse world position " + touchWorldPos);
                        //print ("camera position " + Camera.main.transform.position);
                        //print ("GameObject position " + tools.transform.position);

                        dragging = true;
                    }
                }
                break;

            case TouchPhase.Moved:
                if(dragging && tools == GameObject.FindGameObjectWithTag("tools")){
                    touchWorldPos = Camera.main.ScreenToWorldPoint(new Vector3(touch.position.x, touch.position.y, 0));
                    v3target = touchWorldPos - offset;
                    //print ("v3 target " + v3target);
                    tools.transform.position = new Vector3(v3target.x, v3target.y, dragObjectOriginal.z);
                }
                break;

            case TouchPhase.Ended:
                dragging = false;
                if(tools == GameObject.FindGameObjectWithTag("tools")){
                    tools.transform.position = startingPos;
                }
                break;
            }
        }
    }