【功能实现】用鼠标拖动物体
因为OnMouseDown()会在碰撞器上按鼠标时调用,所以直接挂载到对应物体上就能使用,无需StartCoroutine

代码:
using System.Collections;
using UnityEngine;
public class Drag : MonoBehaviour
{
private IEnumerator OnMouseDown()
{
//将三维物体坐标转换成屏幕坐标
Vector3 screenPosition = Camera.main.WorldToScreenPoint(transform.position);
//鼠标屏幕坐标
Vector3 currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
//将鼠标屏幕坐标转换成三维坐标
Vector3 mouseWorldPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace);
//计算物体位置与鼠标之间的距离
Vector3 offset = transform.position - mouseWorldPosition;
while (Input.GetMouseButton(0))
{
//更新鼠标屏幕坐标
currentScreenSpace = new Vector3(Input.mousePosition.x, Input.mousePosition.y, screenPosition.z);
//将鼠标屏幕坐标转换成三维坐标
mouseWorldPosition = Camera.main.ScreenToWorldPoint(currentScreenSpace);
//移动物体坐标
Vector3 currentPosition = mouseWorldPosition + offset;
//将物体坐标设置成移动后的坐标
transform.position = currentPosition;
//返回 (只有当下一次fixedUpdate开始时再执行后续代码)
yield return new WaitForFixedUpdate();
}
}
}
代码来源:https://www.bilibili.com/video/BV1hx4y197X1 评论区

浙公网安备 33010602011771号