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


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

    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实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 回形取数
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    Java实现 蓝桥杯VIP 基础练习 报时助手
    block的是发送信号的线程,又不是处理槽函数的线程
  • 原文地址:https://www.cnblogs.com/daxueba-ITdaren/p/4233824.html
Copyright © 2020-2023  润新知