[Investor Relations]  |  官方微博

Unity3D培训

美国上市公司 · 亿元级外企unity3D培训企业

  • 全国服务监督电话4008270010
Unity3D培训 > Unity3D教程 > Runtime切换摄像机
  • Runtime切换摄像机

    发布:达内  来源:互联网  时间: 2015年08月07日

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

  • 为了实现相机的切换,需要禁用一个、启用另一个。首先创建一个简单的场景:一个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

网站导航
2001-2016 达内时代科技集团有限公司 版权所有 京ICP证8000853号-56