zoukankan      html  css  js  c++  java
  • 在多个游戏视图间切换环境准备

    在多个游戏视图间切换环境准备 

    2.2  在多个游戏视图间切换

    很多游戏支持玩家切换视角,例如,可以在第一人称视角和第三人称视角间来回切换的《穿越火线》,如图2-7所示。本节就来学习,通过键盘按键,切换游戏视图的方法。在上一节使用的项目的基础上,完成本节的示例演示本文选自Unity游戏开发技巧集锦大学霸。


    图2-7  第一人称视角与第三人称视角

    2.2.1  环境准备

    继续为项目添加一个摄像机,项目中拥有的3个摄像机的名字分别是:Main Camera、Camera1和Camera2。禁用后2个摄像机的Camera和Audio Listener组件。在Unity里,单击GameObject|Create Empty命令,创建一个空游戏对象,并修改它的名字为Switchboard。此时场景中的所有游戏对象,以及3个摄像机的视图如图2-8所示本文选自Unity游戏开发技巧集锦大学霸。

     

    图2-8  场景中的游戏对象,以及3个摄像机的视图

    2.2.2  编写脚本

    在Project视图中,创建一个C#脚本文件,并命名为CameraSwitch,打开此脚本文件,并填写如下代码:

     

    • 01     using UnityEngine;
    • 02    
    • 03     public class CameraSwitch : MonoBehaviour
    • 04     {
    • 05              public GameObject[] cameras;
    • 06              public string[] shortcuts;
    • 07              public bool changeAudioListener = true;
    • 08              //运行游戏时,每一帧都调用此函数
    • 09              void Update ()
    • 10              {
    • 11                       int i = 0;
    • 12                       for(i=0; i<cameras.Length; i++)
    • 13                       {
    • 14                                 if (Input.GetKeyUp(shortcuts[i]))
    • 15                                          SwitchCamera(i);
    • 16                       }
    • 17              }
    • 18              void SwitchCamera ( int index )
    • 19              {
    • 20                       int i = 0;
    • 21                       for(i=0; i<cameras.Length; i++)
    • 22                       {
    • 23                                 if(i != index)
    • 24                                 {
    • 25                                          if(changeAudioListener)
    • 26                                          {
    • 27                                                   cameras[i].GetComponent<AudioListener>().enabled = false;
    • 28                                          }
    • 29                                          cameras[i].camera.enabled = false;
    • 30                                 }
    • 31                                 else
    • 32                                 {
    • 33                                          if(changeAudioListener)
    • 34                                          {
    • 35                                                   cameras[i].GetComponent<AudioListener>().enabled = true;
    • 36                                          }
    • 37                                          cameras[i].camera.enabled = true;
    • 38                                 }
    • 39                       }
    • 40              }
    • 41     }

    脚本代码,将依据玩家按下的按键(键盘上的1、2和3),决定启用对应摄像机的AudioListener和camera组件,禁用其余两部摄像机的AudioListener和camera组件。玩家将因此看到不同的游戏视图本文选自Unity游戏开发技巧集锦大学霸。

  • 相关阅读:
    通过反射将一个java对象的属性值转换为一个Map
    反射中的 Method 的 getReadMethod 与 getWriteMethod 使用 【获取一个对象的所有属性字段名称和其对应的值】
    maven项目无法导入Oracle的jdbc连接jar包【我】
    史上最全最详细JNDI数据源配置说明
    启动eclipse导致Tomcat的配置文件重置
    各种集合key,value能否为null
    CentOS系统使用yum安装配置MariaDB数据库
    Unity导出webPlayer并且部署到IIS
    unity web项目发布服务器Data file is corrupt (not a Unity W
    Unity3d Web Player 的server端联网配置
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/4233824.html
Copyright © 2011-2022 走看看