Unity写一个鼠标拖动物体移动的代码
时间: 2024-03-12 10:48:23 浏览: 78
当然可以,以下是一个简单的示例代码:
```csharp
using UnityEngine;
public class DragObject : MonoBehaviour
{
private Vector3 mOffset;
private float mZCoord;
private void OnMouseDown()
{
mZCoord = Camera.main.WorldToScreenPoint(gameObject.transform.position).z;
mOffset = gameObject.transform.position - GetMouseWorldPos();
}
private Vector3 GetMouseWorldPos()
{
Vector3 mousePoint = Input.mousePosition;
mousePoint.z = mZCoord;
return Camera.main.ScreenToWorldPoint(mousePoint);
}
private void OnMouseDrag()
{
transform.position = GetMouseWorldPos() + mOffset;
}
}
```
在此示例中,我们使用了 `OnMouseDown` 和 `OnMouseDrag` 两个方法来实现鼠标拖动物体移动的效果。
`OnMouseDown` 方法在鼠标按下时触发,记录了当前物体的位置和鼠标点击位置之间的偏移量。我们使用 `Camera.main.WorldToScreenPoint()` 将物体的世界坐标转换为屏幕坐标,并记录 z 轴坐标作为偏移量,以保证鼠标移动时物体不会移出屏幕。
`OnMouseDrag` 方法在鼠标拖动时触发,通过 `GetMouseWorldPos()` 方法获取当前鼠标所处的世界坐标,并根据之前记录的偏移量更新物体的位置。
阅读全文