【发布时间】:2018-09-01 16:31:31
【问题描述】:
我一直在尝试让 Unity 3D 中的对象拖放功能在移动设备上运行。我希望这样当你在屏幕上拖动时,对象会在 z 轴上移动,如果你向上或向下拖动屏幕,对象将在 z 轴而不是 y 轴上移动。 这是我目前拥有的代码...
public class MovementController : MonoBehaviour
{
Vector3 dist;
Vector3 startPos;
float posX;
float posZ;
float posY;
void OnMouseDown()
{
startPos = transform.position;
dist = Camera.main.WorldToScreenPoint(transform.position);
posX = Input.mousePosition.x - dist.x;
posY = Input.mousePosition.y - dist.y;
posZ = Input.mousePosition.z - dist.z;
}
void OnMouseDrag()
{
float disX = Input.mousePosition.x - posX;
float disY = Input.mousePosition.y - posY;
float disZ = Input.mousePosition.z - posZ;
Vector3 lastPos = Camera.main.ScreenToWorldPoint(new Vector3(disX, disY, disZ));
transform.position = new Vector3(lastPos.x, startPos.y, lastPos.z);
}
}
但是这使得对象在 z 轴上只移动了一点点,我必须直接走到屏幕的顶部才能让它移动一点点。有没有更好的方法来做到这一点,因为我似乎无法找到一种方法来更改代码来解决这个问题。 谢谢。
【问题讨论】:
标签: c# visual-studio unity3d