
先来示意图(没有在游戏场景中尝试,而是用立方体和球体来试验的,画面不是很漂亮,希望朋友们可以理解哦)
来看看具体是怎么实现的吧:
先在场景中添加地面和立方体和球体,想要让画面漂亮一点也可以给地面,立方体和球体分别添加不同的材质球;
然后手动添加一个摄像机,并把手动添加的摄像机和主摄像机分别拖给立方体和球体;
再就是给立方体和球体分别添加控件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 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 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.} 最后不要忘记在球体的属性下做设置,把放在立方体和球体下的摄像机分别拖放到相应的位置:
