Unity物体跟随鼠标移动,并且限制物体的移动范围和物体的y值
1.在场景中创建一个Cube
2.创建一个脚本test2,(名字比较随意,正式开发还是规范些比较好)
3.把脚本挂载到Cube上,然后打开test2脚本,把下面C#代码拷贝进去,里面的变量和执行过程都有注释的
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class test2 : MonoBehaviour
{
public float fixedY = 1.0f;//固定物体的y值 这个值在编辑器中可做调整
Vector3 screenPosition;//将物体从世界坐标转换为屏幕坐标
Vector3 mousePositionOnScreen;//获取到点击屏幕的屏幕坐标
Vector3 mousePositionInWorld;//点击屏幕的屏幕坐标转换为世界坐标
void Update()
{
//将物体的世界坐标转换成屏幕坐标
screenPosition = Camera.main.WorldToScreenPoint(transform.position);
//获取鼠标在场景中坐标
mousePositionOnScreen = Input.mousePosition;
//限制物体移动范围在20 (如果不限制的话,移动鼠标到很远的地方,物体都不知道飞哪去了)
mousePositionOnScreen.z = screenPosition.z > 20.0f ? 20.0f : screenPosition.z;
//将鼠标的屏幕坐标转化为世界坐标
mousePositionInWorld = Camera.main.ScreenToWorldPoint(mousePositionOnScreen);
//限制物体移动的y值
mousePositionInWorld.y = fixedY;
//物体跟随鼠标移动
transform.position = mousePositionInWorld;
}
}