Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动

一、摄像机的理解操作

1. //1.创建3个小球,添加颜色,设置层,层加名字,小球的名字加个后缀方便区分,对应层

    //2.三个相机,分别对应改颜色,改右边Culling Mask,分别对应,每次点击相机只照射一个物体的颜色

    //3.分屏显示--Viewport Rectx,y是每块左下角的值,全长屏为(11

  

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.  屏幕:最右上角482271,改成正焦摄像机,看着还好点

     Vector3 v = Camera.main.WorldToScreenPoint(obj.transform.position);//世界转化成屏幕坐标系,可实现边界

     Debug.Log(v);

Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动

三、把脚本给了方块,让方块物体朝向目标移动,自动寻路,并且物体绕过障碍物,鼠标点击哪里,物体就运动到哪里

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));

            }

        }

    }

Unity18--鼠标和场景相反运动、物体绕过障碍物,向目标自动移动,且鼠标点击哪里,物体也运动