unity学习之摄像机的应用

unity学习,希望我的博客能给喜欢unity的朋友带来帮助

       今天学习了摄像机的应用,具体用途就是在游戏中,主角在行走时是远距离的跟随照射,当打怪物是近距离的照射,这样的切换有利于我们更好的观察游戏中的场景,下面我们就来看看这个是怎么完成的吧!

       先来示意图(没有在游戏场景中尝试,而是用立方体和球体来试验的,画面不是很漂亮,希望朋友们可以理解哦)

          

          

           


         来看看具体是怎么实现的吧:


                 先在场景中添加地面和立方体和球体,想要让画面漂亮一点也可以给地面,立方体和球体分别添加不同的材质球;


                 然后手动添加一个摄像机,并把手动添加的摄像机和主摄像机分别拖给立方体和球体;


                 再就是给立方体和球体分别添加控件Character Controller;


                    


                  最后就是编写代码来实现我们的效果了;


         添加给立方体的代码如下:


  1. using UnityEngine;
  2. using System.Collections;

  3. public class CubeCamera : MonoBehaviour {
  4.     //声明CharacterController组件
  5.     private CharacterController cube;
  6.     //定义立方体运动时的速度
  7.     float speed = 5f;
  8.     //定义标志位,声明为静态的
  9.     public static bool flag = false;

  10.     void Start()
  11.     {
  12.          //在Start方法中获取CharacterController组件
  13.          cube = GetComponent();
  14.     }

  15.     void Update()
  16.     {
  17.         if (flag)
  18.         {
  19.             //立方体可以上下左右的运动
  20.             float x = Input.GetAxis("Horizontal") * speed;
  21.             float z = Input.GetAxis("Vertical") * speed;
  22.             cube.SimpleMove(new Vector3(x, 0, z));
  23.         }

  24.     }
  25. }

       添加给球体的代码如下:


  1. using UnityEngine;
  2. using System.Collections;

  3. public class SphereCamera : MonoBehaviour {
  4.     //声明CharacterController组件
  5.     private CharacterController sphere;
  6.     //定义球体运动时的速度
  7.     float speed = 5f;
  8.     //定义游戏对象sphereCamera和cubeCamera
  9.     public GameObject sphereCamera;
  10.     public GameObject cubeCamera;
  11.     //定义标志位为true
  12.     bool flage = true;

  13.     void Start()
  14.     {
  15.          //在Start方法中获取CharacterController组件
  16.          sphere = GetComponent();
  17.     }

  18.     int y = 0;
  19.     void Update()
  20.     {
  21.         if (flage)
  22.         {
  23.             //球体可以上下左右的运动
  24.             float x = Input.GetAxis("Horizontal") * speed;
  25.             float z = Input.GetAxis("Vertical") * speed;
  26.             sphere.SimpleMove(new Vector3(x, y, z));
  27.         }
  28.     }
  29.     //触发器
  30.     void OnTriggerEnter(Collider other)
  31.     {
  32.         //当球体通过标签碰到立方体时发生口号内的事件
  33.         if (other.tag == "Cube")
  34.         {
  35.             //标志位为假
  36.             flage = false;
  37.             //SetActive:控制人物在一定范围内或碰撞盒触发后显示或关闭物体
  38.             //当标志位为假时,球体摄像机为关闭,立方体摄像机显示
  39.             sphereCamera.SetActive(false);
  40.             cubeCamera.SetActive(true);
  41.             CubeCamera.flag = true;
  42.         }
  43.     }
  44. }

         最后不要忘记在球体的属性下做设置,把放在立方体和球体下的摄像机分别拖放到相应的位置:

           


更多精彩内容请关注:http://www.gopedu.com/

你可能感兴趣的:(学习整理,unity3d,unity3d教程,unity教程,unity培训,unity)