Unity3D培训
美国上市Unity3D培训机构

400-111-8989

热门课程

Runtime切换摄像机

  • 时间:2015-08-07
  • 发布:达内
  • 来源:互联网

为了实现相机的切换,需要禁用一个、启用另一个。首先创建一个简单的场景:一个cube、3个相机。为了遍历这些摄像机,我们可以使用tag标记来实现。选取摄像机对象,放入一个列表中,然后使用for循环遍历,找到camera组件,然后禁用所有的。最后启用指定的摄像机。

第一创建一个函数接收整型数字为参数,来指定要激活某个摄像机。


1

function Update(){ 

2

    if(Input.GetKey("1")){ 

3

   Debug.Log("Using Camera One"); 

4

   camSwap(1); 

5

    } 

6

7

function camSwap(currentCam : int){ 

8

 

9

}

Unity3D教程:Runtime 切换摄像机

第二在camSwap函数内,创建一个for循环来查找所有含有cam标记的对象,cam标记被应用在场景中的所有三个摄像机上,使用GetComponent来禁用所有的摄像机。

 

 

 

1

function camSwap(currentCam : int){ 

2

 var cameras = GameObject.Fi ndGameObjectsWithTag("cam"); 

3

 

4

 for (var cams : GameObject in cameras){ 

5

   cams.GetComponent(Camera).enabled = false; 

6

 } 

7

}

第三.最后,选择到你想要摄像机,传入参数序号,并组成摄像机名称,然后使用Find和GetComponent函数找到它,然后启用Camera组件。

 

 

 

1

var oneToUse : String = "Camera"+currentCam; 

2

 gameObject.Find(oneToUse).GetC omponent(Camera).enabled = true; 

所有的摄像机都应该命名为:Camera1,Camera2,Camera3等等。

参考图片设置标记,脚本如下:

 

 

 

01

Javascript 

02

function Update () { 

03

 if(Input.GetKey("1")){ 

04

   Debug.Log("Using Camera One"); 

05

   camSwap(1); 

06

 } 

07

 if(Input.GetKey("2")){ 

08

   Debug.Log("Using Camera Two"); 

09

   camSwap(2); 

10

 } 

11

 if(Input.GetKey("3")){ 

12

 

13

 

14

   Debug.Log("Using Camera Three"); 

15

   camSwap(3); 

16

 } 

17

18

 

19

function camSwap(currentCam : int){ 

20

 var cameras = GameObject.Fi ndGameObjectsWithTag("cam"); 

21

 

22

 for (var cams : GameObject in cameras){ 

23

   cams.GetComponent(Camera).enabled = false; 

24

 }      

25

 

26

 var oneToUse : String = "Camera"+currentCam; 

27

 

28

 

29

 gameObject.Find(oneToUse).GetC omponent(Camera).enabled = true;  

30

31

C# Equivalent 

32

using UnityEngine; 

33

using System.Collections; 

34

 

35

public class camControl : MonoBehaviour { 

36

 

37

 void Update () { 

38

   if(Input.GetKey("1")){ 

39

    Debug.Log("Using Camera One");   

40

    camSwap(1); 

41

 

42

 

43

   } 

44

   if(Input.GetKey("2")){ 

45

    Debug.Log("Using Camera Two"); 

46

    camSwap(2); 

47

   } 

48

   if(Input.GetKey("3")){ 

49

    Debug.Log("Using Camera Three");   

50

    camSwap(3); 

51

   } 

52

 } 

53

 

54

 void camSwap(int currentCam){   

55

   GameObject[] cameras = GameObj ect.FindGameObjectsWithTag("cam "); 

56

 

57

 

58

 

59

 

60

   foreach (GameObject cams in cameras){ 

61

    Camera theCam = cams.GetC omponent<Camera>() as Camera; 

62

    theCam.enabled = false; 

63

   }      

64

 

65

   string oneToUse = "Camera"+currentCam; 

66

   Camera usedCam = GameObject.F ind(oneToUse).GetComponent<Camer a>() as Camera; 

67

   usedCam.enabled = true; 

68

 } 

69

}

 

上一篇:GUIFly脚本
下一篇:Unity3D PRO 3D游戏制作系列教程第一课:创建游戏工程I

3D网页游戏场景打包与加载

学unity3D需要掌握哪些unity3D基础知识?

如何学习Unity3d?

学习Unity3D必须经历的几个阶段

选择城市和中心
贵州省

广西省

海南省