unity学习,希望我的博客能给喜欢unity的朋友带来帮助
今天学习了摄像机的应用,具体用途就是在游戏中,主角在行走时是远距离的跟随照射,当打怪物是近距离的照射,这样的切换有利于我们更好的观察游戏中的场景,下面我们就来看看这个是怎么完成的吧!
先来示意图(没有在游戏场景中尝试,而是用立方体和球体来试验的,画面不是很漂亮,希望朋友们可以理解哦)
来看看具体是怎么实现的吧:
先在场景中添加地面和立方体和球体,想要让画面漂亮一点也可以给地面,立方体和球体分别添加不同的材质球;
然后手动添加一个摄像机,并把手动添加的摄像机和主摄像机分别拖给立方体和球体;
再就是给立方体和球体分别添加控件Character Controller;
最后就是编写代码来实现我们的效果了;
添加给立方体的代码如下:
- using UnityEngine;
- using System.Collections;
- public class CubeCamera : MonoBehaviour {
- //声明CharacterController组件
- private CharacterController cube;
- //定义立方体运动时的速度
- float speed = 5f;
- //定义标志位,声明为静态的
- public static bool flag = false;
- void Start()
- {
- //在Start方法中获取CharacterController组件
- cube = GetComponent<CharacterController>();
- }
- void Update()
- {
- if (flag)
- {
- //立方体可以上下左右的运动
- float x = Input.GetAxis("Horizontal") * speed;
- float z = Input.GetAxis("Vertical") * speed;
- cube.SimpleMove(new Vector3(x, 0, z));
- }
- }
- }
添加给球体的代码如下:
- using UnityEngine;
- using System.Collections;
- public class SphereCamera : MonoBehaviour {
- //声明CharacterController组件
- private CharacterController sphere;
- //定义球体运动时的速度
- float speed = 5f;
- //定义游戏对象sphereCamera和cubeCamera
- public GameObject sphereCamera;
- public GameObject cubeCamera;
- //定义标志位为true
- bool flage = true;
- void Start()
- {
- //在Start方法中获取CharacterController组件
- sphere = GetComponent<CharacterController>();
- }
- int y = 0;
- void Update()
- {
- if (flage)
- {
- //球体可以上下左右的运动
- float x = Input.GetAxis("Horizontal") * speed;
- float z = Input.GetAxis("Vertical") * speed;
- sphere.SimpleMove(new Vector3(x, y, z));
- }
- }
- //触发器
- void OnTriggerEnter(Collider other)
- {
- //当球体通过标签碰到立方体时发生口号内的事件
- if (other.tag == "Cube")
- {
- //标志位为假
- flage = false;
- //SetActive:控制人物在一定范围内或碰撞盒触发后显示或关闭物体
- //当标志位为假时,球体摄像机为关闭,立方体摄像机显示
- sphereCamera.SetActive(false);
- cubeCamera.SetActive(true);
- CubeCamera.flag = true;
- }
- }
- }
最后不要忘记在球体的属性下做设置,把放在立方体和球体下的摄像机分别拖放到相应的位置:
更多精彩内容请关注:http://www.gopedu.com/