首页 文章

如何在Unity3D中用手指触摸移动

提问于
浏览
0

我想用触摸移动设备来移动我的游戏对象,就像玩家可以触摸屏幕上的任何地方并移动他/她的手指一样,游戏对象将随之移动,而不是移动触摸位置 .

这是我到目前为止的脚本

void Update () {

    if (Input.touchCount > 0)
    {
        Touch _touch = Input.GetTouch(0); // screen has been touched, store the touch 

        if( _touch.phase == TouchPhase.Moved) // finger moved 
        {
            //offset = Camera.main.ScreenToWorldPoint(new Vector3(_touch.position.x, _touch.position.y, theplayer.transform.position.z)) - theplayer.transform.position; 

            touchPos = Camera.main.ScreenToWorldPoint(new Vector3(_touch.position.x, _touch.position.y, theplayer.transform.position.z));

            theplayer.transform.position = Vector2.Lerp(theplayer.transform.position, touchPos, Time.deltaTime*5f);

        }
        else if(_touch.phase == TouchPhase.Ended){
            touchPos = Vector3.zero;
            offset = Vector3.zero;
        }

    }

} // end

脚本几乎正常工作,但问题是当我触摸屏幕时,游戏对象在手指下方移动,所以我无法看到游戏对象 . 我不想要这个我想触摸屏幕上的任何地方并用手指移动而不是移动到手指位置 .

谢谢 .

1 回答

  • 1

    我自己在这里解决了问题是解决方案代码 .

    // Update is called once per frame
        void Update () {
    
            if (Input.touchCount > 0)
            {
                 _touch = Input.GetTouch(0); // screen has been touched, store the touch 
    
                if(_touch.phase == TouchPhase.Began){
                    isDragging = true;
    
                    offset = Camera.main.ScreenToWorldPoint(new Vector2(_touch.position.x, _touch.position.y)) - theplayer.transform.position;
    
                }
                else if(_touch.phase == TouchPhase.Ended){
                    offset = Vector2.zero;
                    isDragging = false;
                }
    
            }
    
            if(isDragging){
                Vector2 _dir = Camera.main.ScreenToWorldPoint(new Vector2(_touch.position.x, _touch.position.y));
                _dir = _dir - offset;
    
                theplayer.transform.position = Vector2.Lerp(theplayer.transform.position, _dir, Time.deltaTime * speed);
    
            }
    
    
        } // end
    

相关问题