Unity2D-如何将对象移动到触摸位置

本文关键字:触摸 位置 移动 对象 Unity2D- | 更新日期: 2023-09-27 17:58:09

我正在使用我的android设备来检测触摸的位置并移动我的对象,但我的对象更改了位置,使其从我的相机视图中消失,我需要使用ScreenToWorldPoint吗?那么,我该如何使用它呢?

这是我的代码:

void Update() {
    for (var i = 0; i < Input.touchCount; i++) {
        if (Input.GetTouch(i).phase == TouchPhase.Began) {
            transform.position = new Vector3 (Input.GetTouch(i).position.x, Input.GetTouch(i).position.y, transform.position.z);
        }
    }
}

Unity2D-如何将对象移动到触摸位置

您可以这样尝试:

private void Update()
{
    for (var i = 0; i < Input.touchCount; i++)
    {
        if (Input.GetTouch(i).phase == TouchPhase.Began)
        {
            var worldPosition = Camera.main.ScreenToWorldPoint(Input.GetTouch(i).position);
            transform.position = worldPosition;
        }
    }
}

你可以试试这个,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SelectObject : MonoBehaviour {
    // Use this for initialization
    GameObject hitObj;
    RaycastHit hit;
    private float speed = 1;
    void Start () {
    }
    // Update is called once per frame
    void Update () {
        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, 10)) {
                            hitObj = hit.collider.gameObject;
                    }
                    break;
            case TouchPhase.Moved:
                // If the finger is on the screen, move the object smoothly to the touch position          
                float step = speed * Time.deltaTime; // calculate distance to move
                if(hitObj != null)
                    hitObj.transform.position = Camera.main.ScreenToWorldPoint(new Vector3 (touch.position.x, touch.position.y, hitObj.transform.position.z));
                break;
            }
        }
    }
}