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);
}
}
}
您可以这样尝试:
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;
}
}
}
}