Einheit OnMouseDrag() Drag-and-Drop
Versucht zu ziehen und ein Spiel-Objekt auf der x-und y-Achse. Aus irgendeinem Grund werden die Werte der x -, y-und z kleiner als die Zeit weitergeht, auch wenn die Maus nicht bewegt. Kann mir jemand erklären, warum dies passiert ist?
using UnityEngine;
using System.Collections;
public class Drag : MonoBehaviour {
Vector3 point;
float x;
float y;
float z;
void Update () {
}
void OnMouseDrag()
{
x = Input.mousePosition.x;
y = Input.mousePosition.y;
z = gameObject.transform.position.z;
point = Camera.main.ScreenToWorldPoint (new Vector3 (x, y, z));
gameObject.transform.position = point;
Debug.Log ("x: " + point.x + " y: " + point.y + " z: " + point.z);
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre
z
sollte der Abstand von der Kamera:z=(Camera.main.transform.position-gameObject.transform.position).magnitude
. Sogar mit diesem ist es möglich, dass Sie erleben einige drift, weil der float-Genauigkeit-Probleme (hängt vom Maßstab und Glück).Wenn Sie drift-Probleme haben, versuchen Sie, den cache der
z
Wert.Auch, Sie hätten mehr Kontrolle (und kein float drift-Probleme), wenn Sie verwendet werden
Camera.main.ScreenPointToRay
und raycasted, dass gegen einePlane
:Den
Plane
verwendet, es sollte so etwas wie dieses:Es ist orientiert an der position
Vector3.zero
und es ist nach oben (Vector3.up
).