热门IT资讯网

[Unity3D]多个摄像机进行场景的切换

发表于:2024-11-23 作者:热门IT资讯网编辑
编辑最后更新 2024年11月23日,摄像机比作人的眼睛最适合不过了。比如:极品飞车里面可变换视觉角度,可以从多个角度观察汽车。切换摄像机:一个键控制一个摄像机这里是有多少台摄像机就要设置多少个建,有些场景可能有十多个视角,比如NBA2K
摄像机比作人的眼睛最适合不过了。比如:极品飞车里面可变换视觉角度,可以从多个角度观察汽车。
切换摄像机:一个键控制一个摄像机
这里是有多少台摄像机就要设置多少个建,有些场景可能有十多个视角,比如NBA2K游戏里面就有多达12个视角以上,下面这种方法就不适用了, [csharp] view plaincopy
  1. using UnityEngine;
  2. using System.Collections;
  3. public class ActiveCamera : MonoBehaviour {
  4. public GameObject camFirst;
  5. public GameObject camThree;
  6. public GameObject camSky;
  7. public float changeInterval = 1.0f;
  8. public string showStr = "";
  9. void Start () {
  10. FindCamera();
  11. }
  12. //找到摄像机对象
  13. void FindCamera()
  14. {
  15. camFirst = GameObject.Find("Main Camera");//第一人称视角
  16. camThree = GameObject.Find("CameraThree");//第三人称视角
  17. camSky = GameObject.Find("CameraSky");//空中俯瞰视角
  18. camFirst.active = true;
  19. camThree.active = false;
  20. camSky.active = false;
  21. }
  22. void Update () {
  23. }
  24. void OnGUI()
  25. {
  26. ChangeAngle1();
  27. }
  28. void ChangeAngle1()
  29. {
  30. if (Input.GetKey(KeyCode.Alpha1))
  31. {
  32. SetFalse();
  33. camFirst.active = true;
  34. showStr = "切换至第三人称视角";
  35. }
  36. else if (Input.GetKey(KeyCode.Alpha2))
  37. {
  38. SetFalse();
  39. camSky.active = true;
  40. showStr = "切换至空中视角";
  41. }
  42. else if (Input.GetKey(KeyCode.Alpha3))
  43. {
  44. SetFalse();
  45. camThree.active = true;
  46. showStr = "切换至第一人称视角";
  47. }
  48. Debug.Log(showStr);
  49. // GUILayout.Button(showStr);
  50. }
  51. void SetFalse()
  52. {
  53. camFirst.active = false;
  54. camThree.active = false;
  55. camSky.active = false;
  56. }
  57. }


切换摄像机:一个键控制N个摄像机
下面尝试的代码不起效果,有待解决 [csharp] view plaincopy
  1. void ChangeAngle2()
  2. {
  3. if (Input.GetKey(KeyCode.Z))
  4. {
  5. if (camFirst.active)
  6. {
  7. camFirst.active = false;
  8. camThree.active = false;
  9. camSky.active = true;
  10. showStr = "切换至第三人称视角";
  11. }
  12. if (camThree.active)
  13. {
  14. camFirst.active = false;
  15. camThree.active = false;
  16. camSky.active = true;
  17. showStr = "切换至空中视角";
  18. }
  19. if (camSky.active)
  20. {
  21. camFirst.active = true;
  22. camThree.active = false;
  23. camSky.active = false;
  24. showStr = "切换至第一人称视角";
  25. }
  26. }
  27. Debug.Log(showStr);
  28. //GUILayout.Button(showStr);
  29. }

关于Unity3D,我们有个专门技术讨论的大群,可以进行技术交流和咨询,群号:858550 欢迎进行技术讨论,里面有不少大牛
    0