unity3d游戏开发之摄像机的应用.doc
今天学习了摄像机的应用,具体用途就是在游戏中,主角在行走时是远距离的跟随照射,当打怪物是近距离的照射,这样的切换有利于我们更好的观察游戏中的场景,下面我们就来看看这个是怎么完成的吧! 先来示意图(没有在游戏场景中尝试,而是用立方体和球体来试验的,画面不是很漂亮,希望朋友们可以理解哦) 来看看具体是怎么实现的吧: 先在场景中添加地面和立方体和球体,想要让画面漂亮一点也可以给地面,立方体和球体分别添加不同的材质球; 然后手动添加一个摄像机,并把手动添加的摄像机和主摄像机分别拖给立方体和球体; 再就是给立方体和球体分别添加控件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和cubeCamera10. public GameObject sphereCamera;11. public GameObject cubeCamera;12. /定义标志位为true13. 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. 最后不要忘记在球体的属性下做设置,把放在立方体和球体下的摄像机分别拖放到相应的位置: