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