将下面代码添加到需要拖拽的物体上:
Vector3 currPosition; //拖拽前的位置
Vector3 newPosition; //拖拽后的位置
private void OnMouseDrag()
{
//1:把物体的世界坐标转为屏幕坐标 (依然会保留z坐标)
currPosition = Camera.main.WorldToScreenPoint(transform.position);
//2:更新物体屏幕坐标系的x,y
currPosition = new Vector3(Input.mousePosition.x, Input.mousePosition.y, currPosition.z);
//3:把屏幕坐标转为世界坐标
newPosition = Camera.main.ScreenToWorldPoint(currPosition);
//4:更新物体的世界坐标,y轴不变(高度不变)
transform.position = new Vector3(newPosition.x, transform.position.y, newPosition.z);
}
这段代码展示了在Unity3D中如何实现物体的拖拽功能。通过将物体的世界坐标转换为屏幕坐标,再根据鼠标位置更新物体的屏幕坐标,然后转换回世界坐标,最终保持物体高度不变地进行拖动。此实现适用于交互式场景中的物体操作。
4175





