方法一 :
public void Move() {
// 鼠标一直按下,并判断鼠标是否在ui上面
if (Input.GetMouseButton(0) && !EventSystem.current.IsPointerOverGameObject())
{
// 屏幕坐标转换世界坐标
Vector2 pos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
// 限制飞机xy轴坐标
transform.position = new Vector2(Mathf.Clamp(transform.position.x , -2.1f, 2.1f), Mathf.Clamp(transform.position.y , -3.2f, 5f));
}
}
方法二 :
// 上次坐标初始为0
public Vector2 lastPos = Vector2.zero;
public void Move1() {
// 鼠标一直按下
if (Input.GetMouseButton(0))
{
// 屏幕坐标转换为世界坐标
Vector2 startPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
// 判断上次坐标不为0
if (lastPos != Vector2.zero)
{
// 获取这一帧和上一帧的差值
Vector2 offset = startPos - lastPos;
// 限制飞机移动坐标
transform.position = new Vector2(Mathf.Clamp(transform.position.x + offset.x, -2.1f, 2.1f), Mathf.Clamp(transform.position.y + offset.y, -3.2f, 5f));
}
// 获取上一帧坐标
lastPos = startPos;
}
// 判断鼠标是否抬起
if (Input.GetMouseButtonUp(0))
{
// 上次坐标重新设置为0
lastPos = Vector2.zero;
}
}