首页 理论教育虚拟现实应用开发实践技巧

虚拟现实应用开发实践技巧

【摘要】:图8-177CameraFollow脚本offset是相机初始时与主角之间的距离,speed是相机移动的速度,target设置为public,待会直接拖动主角挂到这里。Lerp是插值的概念,简单来说就是使相机平滑地移动而不是瞬间移位。图8-178脚本挂到相机将游戏场景中的物体加入BoxColider。图8-179加入BoxColider单击Window→Navigation自动寻路组件,Unity只对静止的物体计算,选中所有的场景物体,选择static项。图8-183加入NavMeshAgent组件图8-184添加Player标签图8-185怪物出生点设置图8-186新建脚本EnemyManager将这个脚本挂在一个空物体上。

调整摄像机位置,如图8-176所示。

图8-176 摄像机位置

新建一个C#script:CameraFollow(见图8-177)。

图8-177 CameraFollow脚本

offset是相机初始时与主角之间的距离,speed是相机移动的速度,target设置为public,待会直接拖动主角挂到这里。Lerp是插值的概念,简单来说就是使相机平滑地移动而不是瞬间移位。再把这个脚本挂在相机上(见图8-178)。此时运行游戏,可以看见相机随角色移动了。

1)主角与场景物体

移动主角的时候你会发现主角会穿过场景物体,这个显然不符合常识,解决的方法有很多。

图8-178 脚本挂到相机

(1)将游戏场景中的物体加入BoxColider(见图8-179)。

图8-179 加入BoxColider

(2)单击Window→Navigation自动寻路组件,Unity只对静止的物体计算,选中所有的场景物体,选择static项(见图8-180)。

图8-180 勾选Static

接下来调整参数,单击Bake按钮,Unity会烘焙出一张地图,地图中蓝色部分为可走的地方(见图8-181)。

图8-181 地图

制作怪物的预制体,新建一个文件夹Prefabs,先将原先游戏素材中的怪物放到场景中,接着将场景中的怪物直接拖入文件夹Prefabs中,预制品就做好了。如法炮制,将三种怪物都做出预制品(见图8-182)。(www.chuimin.cn)

图8-182 怪物预制品

将三种怪物都加入NavMeshAgent组件,这些都是在预制品上制作:新建脚本(见图8-183);给主角加上player的标签(见图8-184)。

2)动态出生怪物

设置几个怪物的出生点,创建空物体、命名、设置位置,以及朝向,决定了怪物出生的地方和朝向(见图8-185)。

新建脚本EnemyManager(见图8-186)。InvokeRepeating表示:每隔一段时间,调用一个方法;Instantiate表示:实例化一个物体,传入实例化的地点和朝向。

图8-183 加入NavMeshAgent组件

图8-184 添加Player标签

图8-185 怪物出生点设置

图8-186 新建脚本EnemyManager

将这个脚本挂在一个空物体上(见图8-187)。注意:这里的enemy都是预制品里的怪物了。

图8-187 脚本挂到空物体

运行,可以看到怪物自动生成并会追随主角了(见图8-188)。此时怪物还是鬼畜的平移,下一节解决这个问题。

图8-188 怪物自动生成