1.创建一个灭火器
2.创建脚本
///
/// 移动灭火器
///
private Vector3 targetScreenpos;//拖拽物体的屏幕坐标
private Vector3 targetWorldpos;//拖拽物体的世界坐标
private Transform target;//拖拽物体
private Vector3 mouseScreenpos;//鼠标的屏幕坐标
private Vector3 offset;//偏移量
void Start()
{
target = transform;
}
//被移动物体需要添加collider组件,以响应OnMouseDown()函数
//基本思路。当鼠标点击物体时(OnMouseDown(),函数体里面代码只执行一次),记录此时鼠标坐标和物体坐标,
// 并求得差值。如果此后用户仍然按着鼠标左键,那么保持之前的差值不变即可。
//由于物体坐标是世界坐标,鼠标坐标是屏幕坐标,需要进行转换。具体过程如下所示。
IEnumerator OnMouseDown()
{
targetScreenpos = Camera.main.WorldToScreenPoint(target.position);
mouseScreenpos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreenpos.z);
offset = target.position - Camera.main.ScreenToWorldPoint(mouseScreenpos);
while (Input.GetMouseButton(0))//鼠标左键被持续按下。
{
mouseScreenpos = new Vector3(Input.mousePosition.x, Input.mousePosition.y, targetScreenpos.z);
targetWorldpos = Camera.main.ScreenToWorldPoint(mouseScreenpos) + offset;
target.position = targetWorldpos;
yield return new WaitForFixedUpdate();
}
3.将脚本直接放在灭火器上,即可实现灭火器随鼠标移动