unity让物体跟随鼠标移动
时间: 2024-12-01 21:06:16 浏览: 4
Unity中物体跟随鼠标移动,旋转,缩放
在Unity中实现物体跟随鼠标移动有多种方法[^1]:
1. **直接拾取并拖动**:
- 当玩家左键点击物体时,`OnMouseDown()` 函数会触发。在这个事件中,你可以获取到被点击的对象并设置其 `transform.position` 为鼠标位置,使其跟随鼠标移动。
```csharp
void OnMouseDown() {
if (Input.GetMouseButtonDown(0)) {
// 获取被点击的物体
GameObject pickedObject = GetClickedObject();
// 设置物体位置跟随鼠标
pickedObject.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
}
}
private GameObject GetClickedObject() {
RaycastHit hit;
if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hit)) {
return hit.collider.gameObject;
}
return null; // 如果没有击中物体,则返回null
}
```
2. **利用射线cast**:
- 使用`Raycast`函数检测鼠标点击的位置与场景中的哪个物体接触。如果物体可移动,你可以改变该物体的位置来模拟跟随效果。
```csharp
void Update() {
Ray ray = Camera.main.ViewportPointToRay(Input.mousePosition);
RaycastHit hit;
if (Physics.Raycast(ray, out hit)) {
// 检查物体是否可移动
if (hit.collider.gameObject.CompareTag("Movable")) {
hit.collider.gameObject.transform.position = hit.point;
}
}
}
```
这两种方法可以根据实际需求选择,第一种更直观,第二种则允许更复杂的交互逻辑。
阅读全文