Unity入门:利用Unity制作ppt

来源:互联网 发布:网络安全保密心得体会 编辑:程序博客网 时间:2024/05/21 05:21

Unity入门:利用Unity制作ppt
1、新建一个unity项目,在底部的assets下右键,import packeage,导入character controller模块,引入第一人称控制器。
2、把底部的assets/standard assets/character controllers中的first person controller.prefab拖到左上角的hierarchy栏中。点击三角,可以看见first person controller是由一个camera和一个模型组成的。
这里写图片描述
3、由于本身first person controller内部就有一个camera,于是删去一开始创建的那个Main camera,camera就是游戏运行时的视图。点击first person controller,在最右边的inspector的transform中的position可以调整位置,将其调整为0,0,0,同时也将其内部的main camera位置调整为0,0,0,双击main camera,就能看到其视野范围。之后在hierarchy中右键,创建一个3D object的Cube,将其位置调整为0,0,5,于是cube就出现在了视野中,点击最上面中间的控制器运行,就能够看到cube并且可以鼠标控制视角方向了。
这里写图片描述
这里写图片描述
4、但此时是处于下落状态,所以需要一个“地板”的物体来支撑,不过推荐在first controller的inspector中的character motor 脚本更改gravity值为0来实现停用重力。
5、之后可以创建出一个房间来容纳ppt画面,利用cube的位置、旋转和缩放实现。注意cube的长宽应是4:3或16:9,适应ppt的长宽。
这里写图片描述
6、之后在assets窗口中右键,create创建一个material,将材质球拖到每个墙中即可。在材质球的inspector中,将shader由standard改为particles–alpha blended,这样“墙”就变为了白色,
7、之后把ppt的图片拖到unity的assets中,然后再拖到墙上即可,如果需要ppt有动态展示效果,可自行编写脚本,动图支持3dsMAX等导入。
8、将main camera 的clear flags改成solid color,并调整为白色。运行后效果如下:(图片内容源自互联网)
这里写图片描述
9、为了使ppt看得更清楚,这里加上一个点击ppt就能放大到视角前的功能,需要写一些代码。
10、首先,将这些ppt所在的墙的名称进行更改,便于索引,在hierarchy中更改如改为ppt1,ppt2和ppt3。之后,新建一个camera,目的是检测正确的位置,调整camera,使一张ppt正好正对着完全显示,记下其位置、旋转和缩放数据,同理记下其他ppt。
11、之后写一个脚本,代码如下:

using UnityEngine;using System.Collections;public class pptcontrol : MonoBehaviour {    public GameObject camera1;    public GameObject player1;    public GameObject hitted;    void Start () {        camera1 = GameObject.FindGameObjectWithTag ("MainCamera");        player1=GameObject.FindGameObjectWithTag("Player");    }    void Update () {        if (Input.GetMouseButton (1)) {            camera1.transform.position=new Vector3(0.0f,0.0f,0.0f) ;            camera1.transform.rotation = Quaternion.Euler(0,0,0);                   player1.GetComponent <CharacterMotor>().enabled=true;            player1.GetComponent<MouseLook>().enabled=true;        }        if (Input.GetMouseButton(0)){        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);        RaycastHit hitinfo;        if (Physics.Raycast (ray, out hitinfo)) {            hitted = hitinfo.collider.gameObject;                print (hitted.name);            if(hitted.name=="ppt2"){                camera1.transform.position=new Vector3(0.0f,0.1f,-1.1f) ;                camera1.transform.rotation = Quaternion.Euler(0,0,0);                    not_move_not_look();                    print ("turning ppt2");}                    if (hitted.name=="ppt1"){        camera1.transform.position=new Vector3(-1.752f,0.126f,-1.0564f) ;        camera1.transform.rotation = Quaternion.Euler(0,90,0);                    not_move_not_look();                        print ("turning ppt1");                    }                    if (hitted.name=="ppt3"){    camera1.transform.position=new Vector3(2.0346f,0.12603f,1.0564f) ;    camera1.transform.rotation = Quaternion.Euler(0.0f,-90.0f,0.0f);                        print ("turning ppt3");                    not_move_not_look();                }    }            }}    void not_move_not_look(){        player1.GetComponent <CharacterMotor>().enabled=false;        player1.GetComponent<MouseLook>().enabled=false;    }}

12、代码的作用是:利用射线检测的原理,当点击鼠标左键时,检测射线撞击到了哪个物体(相当于眼睛看到鼠标点击了哪个物体)。得到点击的物体对象,如果它的名字是ppt1,那么视角转换到ppt1面前,同理ppt2和ppt3也一样,转换的同时,player和camera的CharacterMotor以及MouseLook脚本全部使其失效,避免鼠标键盘操作移动ppt的视角,之后如果点击鼠标右键,则回到最初的视角,并启用CharacterMotor以及MouseLook。

后续
最后把项目导出至exe文件就可以使用了。
利用unity的切换场景功能可以实现更加高端的ppt展示方式,比如动画,演示互动等。 虽说用unity制作ppt有些大材小用,但实际上,从ppt图片变成unity项目并不需要太多时间,而且这也可能是一种展示方式的进步。

0 0
原创粉丝点击