Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动
一、摄像机的理解操作
1. //1.创建3个小球,添加颜色,设置层,层加名字,小球的名字加个后缀方便区分,对应层
//2.三个相机,分别对应改颜色,改右边Culling Mask,分别对应,每次点击相机只照射一个物体的颜色
//3.分屏显示--改Viewport Rect,x,y是每块左下角的值,全长屏为(1,1)
2. //改摄像机深度,Depth,深度越大,最后再照,谁深度越大,Game面板最后显示的就是谁
3.小地图的制作
//1.创建个地形,改变Depth only,周边黑框就会消除,只剩地形,一般吧相机放到物体的子物体,正上方上。
二、脚本给了摄像机,可实现场景的移动
//1. 鼠标在一定范围内的右边,摄像机向左,场景向左走。
鼠标在一定范围内的左边,摄像机向右,场景向右走。
Vector3 v1 = Camera.main.ScreenToViewportPoint(Input.mousePosition);
if(v1.x<0.2f)
{
transform.Translate(Vector3.left * 2 * Time.deltaTime,Space.World);//方向写Translate
}
if(v1.x>1-0.2f)
{
transform.Translate(Vector3.right * 2 * Time.deltaTime,Space.World);
}
//2. 鼠标在下面,摄像机向上走,场景向上走
鼠标在上面,摄像机向下走,场景向下走
if (v1.y< 0.2f)
{
transform.Translate(Vector3.back * 2 * Time.deltaTime, Space.World);//方向写Translate
}
if(v1.y>1-0.2f)
{
transform.Translate(Vector3.forward * 2 * Time.deltaTime, Space.World);
}
//3. 屏幕:最右上角482,271,改成正焦摄像机,看着还好点
Vector3 v = Camera.main.WorldToScreenPoint(obj.transform.position);//世界转化成屏幕坐标系,可实现边界
Debug.Log(v);
三、把脚本给了方块,让方块物体朝向目标移动,自动寻路,并且物体绕过障碍物,鼠标点击哪里,物体就运动到哪里
1.创建NavigationTest文件下
//创建目标对象
publicGameObject target;
//获取agent
privateNavMeshAgent agent;
1.void Start () {
agent = GetComponent<NavMeshAgent>();//获取NavMeshAgent组件,cube要接着添加这个组件。
}
2.void Update () {
//1.设置目标点,一定要先对地面烘焙了,
agent.SetDestination(target.transform.position);//方块会移动到小球目标,能先旋转冲向目标再移动
//2.设置障碍物,烘焙,static--Navigation/window---bake烘焙
//3.点哪里物体运动到哪里(),地面、障碍物都要先烘焙,在Game面板里点
//射线(实现鼠标点击)
Ray ray =
Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
//射线检测的信息
//第四个参数,是一个表示二进制位的数,比如第四个参数为5的时候,只有第0层和第2层能被检测,5的二进制是101
if (Physics.Raycast(ray, out hit, 100,1<<8 )) //点击第8层有效,或者加上|1<<9,或者这样写://256+512,
{
if (Input.GetMouseButtonDown(0))
{
agent.SetDestination(newVector3(hit.point.x, agent.transform.position.y, hit.point.z));
}
}
}