前面两篇博文介绍了场景的搭建和角色的构成和操控,至此已可以进行校园的漫步游览了,当然还有UI界面没有制作,为了增加趣味,添加一个打卡任务,使作品又是一个游戏,场景添加7个打卡标志(旋转的楼名或场室名的三维文字),一开始是隐藏的,通过角色漫游触发显示出来,然后角色触碰标志,完成一次打卡,完成所有打卡,即通关,可重新开始。
1、打卡标志
在max中制作7个三维文字,导入到unity中,在unity中手动制作旋转动画(方法略),卡标志的层次构成,如博学楼的标志
Bxl_card
- -
bxl_t
- -
carmera_bxl
- -
timeline
这里Bxl_card为父对象(空对象),其子对象有三个,bxl_t为旋转的文字模型、carmera_bxl为摄像机(博学楼专用,制作相机动画,由于同一时间只能一个相机,先关闭)、timeline为时间线(安排相机动画和博学楼介绍的UI出现),card.cs脚本挂在Bxl_card,脚本用来控制当玩家碰撞到标志时,玩家隐藏,播放楼的介绍文本,出现继续按钮,还有让底部楼名灰色圆点变成绿色,表示打卡成功,具体脚本参看源文件。
这里注意,卡对象的碰撞组件,要勾选istrogger,在脚本的OnTriggerEnter回调函数中去判断是否发生碰撞及碰撞后需要处理的东西,像OnTriggerEnter这类方法,无需放入update方法中,只要碰撞发生就会执行,前提是碰撞组件一定要勾选istrogger。
2、卡的触发
可以在若干位置创建一个空对象,加碰撞组件,调整组件大小位置即可,专写一个触发脚本cf_card.cs,碰撞时判断需要显示哪个卡,同时出现提示文本。
略!
2、游戏管理
一个游戏中,总是有一些公共的东西,需要被各个脚本去调用,尤其有多个场景多个关卡更为重要,由于这个游戏没有其他场景,故相对简单,就算这样,也最好有一个公共的脚本用来游戏的管理,如打卡的数量变量,需要调用的卡对象和触发对象这些游戏对象。脚本中这里定义一个单例(即该类只能实列化一个对象),脚本给场景中一个空对象(命名game manager),即可。
最后打包发布成windows应用,大小约170Mb。
最后补充一点,unity引擎可以免费下载,但需要注册,去官网下载unity hub,用其他比较麻烦,可以使用微信绑定,然后再hub中下载需要的版本,注意只有lts的版本为长期支持版本。
3、UI界面
新版的unity的UI搭建比较方便,添加一个画布,默认就是正对摄像机的,UI是平面的,在场景视图看上去怪怪的,好像场景变的非常小,其实没有关系,只要有UI,运行时,UI默认就会出现在当前摄像机的前方,理解这点就好,如果你的UI是透明的,UI的后面就是你的场景,用脚本控制UI元素关闭,感觉就回到场景了。 |