在Unity3D中,你可以通过编写C脚本来实现物体跟随鼠标移动的功能。以下是一个简单的示例,展示了如何实现这一功能:
创建一个新的Unity3D项目 ,并创建一个游戏对象(例如,一个立方体)。创建一个新的C脚本
,例如命名为`MouseFollow`,并将其附加到游戏对象上。
编写`MouseFollow`脚本的代码:
```csharp
using UnityEngine;
public class MouseFollow : MonoBehaviour
{
public Camera mainCamera; // 指定主相机
public Transform target; // 要跟随的物体
private bool isDown = false; // 是否按下鼠标
private Vector3 targetWTSP; // 记录初始化时目标物体的屏幕坐标
void Start()
{
targetWTSP = mainCamera.WorldToScreenPoint(target.position);
}
void Update()
{
if (isDown)
{
Vector3 mousePos = Input.mousePosition;
Vector3 worldPos = mainCamera.ScreenToWorldPoint(mousePos);
worldPos.z = targetWTSP.z; // 保持Z坐标不变
target.position = worldPos;
}
}
void OnMouseDown()
{
isDown = true;
targetWTSP = mainCamera.WorldToScreenPoint(target.position);
}
void OnMouseUp()
{
isDown = false;
}
}
```
在Unity编辑器中,将`mainCamera`和`target`变量分别设置为你场景中的主相机和需要跟随的物体。
运行场景,你应该能看到物体跟随鼠标移动的效果。
解释
`Start`方法: 在脚本开始时,将目标物体的初始位置从世界坐标转换为屏幕坐标,并存储在`targetWTSP`变量中。 `Update`方法
`OnMouseDown`方法:当鼠标按下时,记录当前目标物体的屏幕坐标。
`OnMouseUp`方法:当鼠标抬起时,将`isDown`标志设置为`false`。
这个脚本实现了基本的物体跟随鼠标移动功能。你可以根据需要调整代码,例如添加平滑移动效果或处理其他交互逻辑。