欢迎来到天天文库
浏览记录
ID:39891228
大小:1.22 MB
页数:24页
时间:2019-07-14
《Unity3D游戏开发之游戏基地实现》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、在做一个策略类的游戏时,需要实现一个基地的功能,功能并不是太复杂,默认只能显示场景的一部分,然后通过场景(地形)查看场景中的其他部分(但是摄像机不能超出地形),当点击建筑时,建筑选中并且有选中效果,当点击非建筑时,选中效果消失!并且可以拖动场景中的建筑到一定地方,因为准确需求还不明确,所以事先做了个基地的DEMO!最终效果如下:20141011163816_4843.jpg(85.64KB,下载次数:0)下载附件 保存到相册5 天前上传 第一步:先布局好大体场景界面,如下图,只有两个建筑,一个平面(用于绘制格子,因
2、为没有足够的资源,格子未显示),另外还有一个叫BuildingCamera的摄像机,这个摄像机非常重要,主要目的是为了让拖动的对象始终显示在最上层!20141011170314_1875.jpg(153.27KB,下载次数:0)下载附件 保存到相册5 天前上传下面我们需要给场景添加一个Layer,我们取名叫BuildingLayer,如下图:20141011171246_8281.jpg(143.83KB,下载次数:0)下载附件 保存到相册5 天前上传20141011171256_3593.jpg(38.96KB,下载次数:
3、0)下载附件 保存到相册5 天前上传 添加好层之后,我们需要修改BuildingCamera摄像机的参数,Layder设置为BuildingLayer,需要修改BuildingCamera的ClearFlags为DepthOnly,CullingMask为Building,并且要确保Depth的值大于MainCamera的值,如下图:20141011164521_2500.jpg(148.82KB,下载次数:0)下载附件 保存到相册5 天前上传我们给Plane添加SceneGrid.cs脚本,这个脚本什么也没有,主要是
4、为了方便PhysisUtils.cs脚本检测对象,如下图:文章来自【狗刨学习网】20141011165022_3593.jpg(149.49KB,下载次数:0)下载附件 保存到相册5 天前上传SceneGrid.cs代码如下:1.usingUnityEngine;2.usingSystem.Collections;3.4.publicclassSceneGrid:MonoBehaviour{5.6. //Usethisforinitialization7. voidStart(){8. 9.
5、 }10. 1. //Updateiscalledonceperframe2. voidUpdate(){3. 4. }5.}复制代码接着,我们给建筑对象(可拖动的对象)添加SceneBuilding.cs脚本,如下图:20141011165207_6406.jpg(170.56KB,下载次数:0)下载附件 保存到相册5 天前上传SceneBuilding.cs代码如下:1.usingUnityEngine;2.usingSystem.Collections;3.4.p
6、ublicclassSceneBuilding:MonoBehaviour5.{6. publicstringbuildingType;7.8. ///9. ///默认材质10. ///11. privateMaterialdefaultMaterial;12.13. voidAwake()14. {15. this.defaultMaterial=this.gameObject.renderer.sharedMaterial;16.
7、 }17.18. ///19. ///设置建筑选中/未选中状态20. ///21. ///Ifsettotruestatus.22. ///Material.23. publicvoidChangeSelect(boolstatus,Materialmaterial)24. {1. if(status)2. {3. material.SetTexture("_MainTex",this
8、.defaultMaterial.GetTexture("_MainTex"));4. this.gameObject.renderer.sharedMaterials=newMaterial[]{this.defaultMaterial,material};
此文档下载收益归作者所有