Unity游戏拖动对象与手指的运动

本文关键字:手指 运动 对象 游戏 拖动 Unity | 更新日期: 2023-09-27 18:02:25

我是Unity新手,开发手机2d游戏,现在我可以让物体在触碰屏幕中心前后左右移动。但我想触摸物体并在x轴上拖动它同时我的手指还在触摸屏幕并移动,所以我想让物体在我手指的x轴上,任何人都可以帮助我如何正确地做到这一点:下面是我如何移动对象的代码,如果我触摸屏幕中心之前或之后:

public class paddle : MonoBehaviour {
    public Rigidbody2D rb;
    public float speed;
    public float maxX;
    bool currentisAndroid=false;
    // Use this for initialization
    void Start () {
        rb = GetComponent<Rigidbody2D> ();
        #if UNITY_ANDROID
        currentisAndroid=true;
        #else
        currentisAndroid=false;
        #endif
    }
    // Update is called once per frame
    void Update () {
        if (currentisAndroid == true) {
            if (Input.GetTouch (0).position.x < Screen.width/2 && Input.GetTouch (0).phase == TouchPhase.Stationary)
                moveLeft ();
            else if (Input.GetTouch (0).position.x > Screen.width/2 && Input.GetTouch (0).phase == TouchPhase.Stationary)
                moveRight ();
            else
                stop ();
        } else {
            float x = Input.GetAxis ("Horizontal");
            //if (Input.GetTouch (0).position.x == rb.position.x && Input.GetTouch (0).phase == TouchPhase.Moved)
            if (x == 0)
                stop ();
            if (x < 0)
                moveLeft ();
            if (x > 0)
                moveRight ();
            Vector2 pos = transform.position;
            pos.x=Mathf.Clamp (pos.x,-maxX,maxX);
            transform.position = pos;
        }

    }
    void moveLeft()
    {
        rb.velocity = new Vector2 (-speed, 0);
    }
    void moveRight()
    {
        rb.velocity = new Vector2 (speed, 0);
    }
    void stop()
    {
        rb.velocity = new Vector2 (0, 0);
    }
    public float getposition()
    {
        return rb.position.y;
    }
}

Unity游戏拖动对象与手指的运动

最简单的方法:

添加组件DragRigidbody脚本,您将能够通过鼠标或触摸屏触摸拖动对象。

如果我理解正确:
1 -用相机从手指位置垂直投射到场景。
2 -选择命中的对象。
3 -将你的相机映射到世界坐标,并根据你的光线命中点使用地图或游戏对象'对象移动该对象。

  • Physics.Raycast ();
  • RaycastHit.collider ();
  • Camera.main.ScreenToWorldPoint(Input.GetTouch(<0或1或all>).position);

如果你想在地图上移动物体,你可以跟踪你的触摸,当它接近角落时,直接移动相机(水平-垂直)