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

摄像机比作人的眼睛最适合不过了。比如:极品飞车里面可变换视觉角度,可以从多个角度观察汽车。

切换摄像机:一个键控制一个摄像机

这里是有多少台摄像机就要设置多少个建,有些场景可能有十多个视角,比如NBA2K游戏里面就有多达12个视角以上,下面这种方法就不适用了,

[csharp] view
plain
copy

  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class ActiveCamera : MonoBehaviour {  
  5.   
  6.     public GameObject camFirst;  
  7.     public GameObject camThree;  
  8.     public GameObject camSky;  
  9.   
  10.     public float changeInterval = 1.0f;  
  11.   
  12.     public string showStr = "";  
  13.   
  14.     void Start () {  
  15.         FindCamera();  
  16.     }  
  17.   
  18.     //找到摄像机对象  
  19.     void FindCamera()  
  20.     {  
  21.         camFirst = GameObject.Find("Main Camera");//第一人称视角  
  22.         camThree = GameObject.Find("CameraThree");//第三人称视角  
  23.         camSky = GameObject.Find("CameraSky");//空中俯瞰视角  
  24.   
  25.         camFirst.active = true;  
  26.         camThree.active = false;  
  27.         camSky.active = false;  
  28.           
  29.     }  
  30.     void Update () {  
  31.       
  32.     }  
  33.   
  34.     void OnGUI()  
  35.     {  
  36.         ChangeAngle1();  
  37.     }  
  38.     void ChangeAngle1()  
  39.     {  
  40.         if (Input.GetKey(KeyCode.Alpha1))  
  41.         {  
  42.             SetFalse();  
  43.             camFirst.active = true;  
  44.             showStr = "切换至第三人称视角";  
  45.         }  
  46.        else if (Input.GetKey(KeyCode.Alpha2))  
  47.         {  
  48.             SetFalse();  
  49.             camSky.active = true;  
  50.             showStr = "切换至空中视角";  
  51.         }  
  52.         else if (Input.GetKey(KeyCode.Alpha3))  
  53.         {  
  54.             SetFalse();  
  55.             camThree.active = true;  
  56.             showStr = "切换至第一人称视角";  
  57.         }  
  58.         Debug.Log(showStr);  
  59.        // GUILayout.Button(showStr);  
  60.     }  
  61.       
  62.     void SetFalse()  
  63.     {  
  64.         camFirst.active = false;  
  65.         camThree.active = false;  
  66.         camSky.active = false;  
  67.     }  
  68.   
  69.   
  70.       
  71. }  

切换摄像机:一个键控制N个摄像机

下面尝试的代码不起效果,有待解决

[csharp] view
plain
copy

  1. void ChangeAngle2()  
  2.    {  
  3.   
  4.        if (Input.GetKey(KeyCode.Z))  
  5.        {  
  6.   
  7.   
  8.            if (camFirst.active)  
  9.            {  
  10.                camFirst.active = false;  
  11.                camThree.active = false;  
  12.                camSky.active = true;  
  13.                showStr = "切换至第三人称视角";  
  14.   
  15.            }  
  16.   
  17.            if (camThree.active)  
  18.            {  
  19.                camFirst.active = false;  
  20.                camThree.active = false;  
  21.                camSky.active = true;  
  22.                showStr = "切换至空中视角";  
  23.   
  24.            }  
  25.   
  26.            if (camSky.active)  
  27.            {  
  28.                camFirst.active = true;  
  29.                camThree.active = false;  
  30.                camSky.active = false;  
  31.                showStr = "切换至第一人称视角";  
  32.   
  33.            }  
  34.        }  
  35.        Debug.Log(showStr);  
  36.        //GUILayout.Button(showStr);  
  37.    }  

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

时间: 2024-09-18 02:11:00

[Unity3D]多个摄像机进行场景的切换的相关文章

cocos2d-x场景效果切换

Cocos2d-x提供了很多场景间切换的效果 1.使用方法: ccTime t = 1.2;    CCScene * pScene = CCScene::node();    CCLayer *pLayer = new book_page1();    pLayer->autorelease();    pScene->addChild(pLayer);    CCTransitionFade* transitionScene = CCTransitionFade::transitionWi

Cocos2D-X入门(2) 场景的切换及特效

在上节的基础上,看看怎么实现场景的切换. 添加一个场景WelcomeScene #include "WelcomeScene.h" #include "GameScene.h" using namespace cocos2d; CCScene* WelcomeScene::scene() { CCScene * scene = NULL; do { scene=CCScene::create(); WelcomeScene* gameScene=WelcomeSce

cocos2d ndroid-cocos2d-Android游戏开发,场景的切换

问题描述 cocos2d-Android游戏开发,场景的切换 请看下面的代码,我从start场景切换到main场景时,为什么main场景里的动画实现不了啊,求大虾帮帮忙,谢谢! package com.example.leidiandazhan; import org.cocos2d.layers.CCScene; import org.cocos2d.nodes.CCDirector; import org.cocos2d.opengl.CCGLSurfaceView; import andr

3.cocos2dx之Menu,通过menu来实现场景的切换

 1 头文件 TMenu.h #ifndef __TMENU_H__ #define __TMENU_H__   #include "cocos2d.h" USING_NS_CC;   class TMenu :public CCLayer { public:     static CCScene * scene();     CREATE_FUNC(TMenu);     bool init();       CCMenu * menu;       void menuCallb

[Unity3D]异步加载游戏场景与异步加载游戏资源进度条

摘要: 异步任务相信大家应该不会陌生,那么本章内容MOMO将带领大家学习Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel("yourScene"); 这句代码执行完毕后程序会干什么呢??如下 ...     异步任务相信大家应该不会陌生,那么下面介绍一下Unity中的一些异步任务.在同步加载游戏场景的时候通常会使用方法 Application.LoadLevel("yourScene");  这句代码执行

[cocos2d-x]场景动画切换过渡大全

各种各样比较炫的场景切换动画,废话少说,直接上代码: void StartScene::beginGame() { CCLog("beginGame"); //CCTransitionScene *trans = CCTransitionScene::create(2, level); //CCDirector::sharedDirector()->replaceScene(level); //场景切换 CCTransitionScene *reScene = NULL; CCS

[Unity3d]多个摄像机叠加效果

今天学习到一个多个摄像机看到的场景在同一个层显示,比如我们做一个类似反光镜的效果,当然反光镜可以直接用Shader来实现,但我就是了实现一个类比这样的一个效果,一个摄像机将看到的图像显示到一个Texture上,然后将Textrue赋予一个面板,然后另一个摄像机看到这个的这个面板放在UI层,然后最后将所有场景里面的物体都置于MainCamera的可见区域. 效果图: 制作过程: 1.导入NGUI包,创建四个Button,分别命名为设备1-4,这就形成了左边的四个按钮: 2.创建一个新的层,取名为U

Unity3d之无缝地形场景切换–解决方法和代码

当我们开发一个大型项目的时候-会遇到这样的问题(地形场景的切换)这个只是字面意思-并不是重场景1的100 100 100坐标一下切换到场景2的100 100 100坐标这样的方法--(如果您以为是这样的技术和代码)那就不用看了.这个技术的实质意义是为了解决--多地形场景带来的大量内存占用问题-举个我的例子-我的测试项目是1013张绘制地形--在不用上面的技术情况下-占用了我4.2G的内存.想想下-如果一个大型的游戏直接这么运行的话)一下就会带来5-8G的内存占用--这个游戏还能玩吗? 下面让我们

unity3-unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic、new为什么还存在

问题描述 unity问一下用C#做脚本,在切换到别的场景中时这个脚本中的staic.new为什么还存在 unity3d这个脚本在这个场景(A)中,不过我切换到别的场景(B)中,前面场景(A)的staic.new为什么还存在.当我切换回来A时static定的变量值没变,如果清除了应该归0呀.切换场景不是这个场景就结束了吗,应该消除static.new的缓存的吧?? 解决方案 C#中的static代表一直存在内存中,不会被释放,所以如果你的数据不是整个生命周期都有效,那就不要随便static,至于n