好文档就是一把金锄头!
欢迎来到金锄头文库![会员中心]
电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本

Unity3D游戏开发之游戏基地实现.doc

24页
  • 卖家[上传人]:飞***
  • 文档编号:16448263
  • 上传时间:2017-11-07
  • 文档格式:DOC
  • 文档大小:1.22MB
  • / 24 举报 版权申诉 马上下载
  • 文本预览
  • 下载提示
  • 常见问题
    • 在做一个策略类的游戏时,需要实现一个基地的功能,功能并不是太复杂,默认只能显示场景的一部分,然后通过场景(地形)查看场景中的其他部分(但是摄像机不能超出地形),当点击建筑时,建筑选中并且有选中效果,当点击非建筑时,选中效果消失!并且可以拖动场景中的建筑到一定地方,因为准确需求还不明确,所以事先做了个基地的 DEMO!最终效果如下:第一步:先布局好大体场景界面,如下图,只有两个建筑,一个平面(用于绘制格子,因为没有足够的资源,格子未显示),另外还有一个叫 BuildingCamera 的摄像机,这个摄像机非常重要,主要目的是为了让拖动的对象始终显示在最上层!下面我们需要给场景添加一个 Layer, 我们取名叫 Building Layer,如下图: 添加好层之后,我们需要修改 BuildingCamera 摄像机的参数, Layder 设置为 Building Layer,需要修改 BuildingCamera 的 Clear Flags 为 Depth Only, Culling Mask 为 Building,并且要确保 Depth 的值大于 Main Camera 的值,如下图:我们给 Plane 添加 SceneGrid.cs 脚本,这个脚本什么也没有,主要是为了方便 PhysisUtils.cs 脚本检测对象,如下图:文章来自 【狗刨学习网 】SceneGrid.cs 代码如下:1. using UnityEngine;2. using System.Collections;3.4. public class SceneGrid : MonoBehaviour {5.6. // Use this for initialization7. void Start () {8. 9. }10. 11. // Update is called once per frame12. void Update () {13. 14. }15. }复制代码接着,我们给建筑对象(可拖动的对象)添加 SceneBuilding.cs 脚本,如下图:SceneBuilding.cs 代码如下:1. using UnityEngine;2. using System.Collections;3.4. public class SceneBuilding : MonoBehaviour 5. {6. public string buildingType;7.8. /// 9. /// 默认材质10. /// 11. private Material defaultMaterial;12.13. void Awake()14. {15. this.defaultMaterial = this.gameObject.renderer.sharedMaterial;16. }17.18. /// 19. /// 设置建筑选中/ 未选中状态20. /// 21. /// If set to true status.22. /// Material.23. public void ChangeSelect(bool status, Material material)24. {25. if (status) 26. {27. material.SetTexture("_MainTex", this.defaultMaterial.GetTexture("_MainTex"));28. this.gameObject.renderer.sharedMaterials = new Material[] {this.defaultMaterial, material};29. } else {30. this.gameObject.renderer.sharedMaterials = new Material[] {this.defaultMaterial};31. }32. }33. }复制代码现在我们给前面创建的空对象 SceneController 挂载脚本 SceneController.cs,并且按下图配置:SceneController 代码如下:1. using UnityEngine;2. using System.Collections;3.4. public class SceneController : MonoBehaviour 5. {6. /// 鼠标枚举7. enum MouseTypeEnum8. {9. LEFT = 010. }11.12. // 拖动建筑枚举13. enum BuildingLayerEnum14. {15. BUILDING = 816. }17.18. ////// 水平移动速度19. ///public float horizontalSpeed = 10f;20.21. ////// 垂直移动速度22. ///public float verticalSpeed = 10f;23.24. ////// 滚轮速度25. ///public float mouseScrollSpeed = 10f;26.27. ////// 拖动状态判断 X 坐标28. ///public float moveOffsetX = 1f;29.30. ////// 拖动状态判断 Y 坐标31. ///public float moveOffsetY = 1f;32.33. ////// 地形高度偏移值34. ///public float terrainOffset = 1f;35.36. ////// 格子偏移值37. ///public float gridOffset = 0.2f;38.39. ////// 发光材质40. ///public Material lightMaterial;41.42. ////// 主摄像机43. ///public Camera mainCamera;44.45. ////// 拖动建筑显示层46. ///public Camera buildingCamera;47. 48. ////// 屏幕顶点信息49. ///private Vector3[] pointList;50.51. ////// 鼠标状态52. ///private bool mousePressStatus = false;53.54. ////// 鼠标 X 坐标55. ///private float mouseX;56.57. ////// 鼠标 Y 坐标58. ///private float mouseY;59.60. ////// 滚轮数据61. ///private float mouseScroll;62.63. ////// 建筑信息64. ///private SceneBuilding sceneBuilding;65.66. ////// 上一次鼠标 X 坐标67. ///private float prevMouseX;68.69. ////// 上一次鼠标 Y 坐标70. ///private float prevMouseY;71.72. ////// 上一次鼠标滚轮73. ///private float prevMouseScroll;74.75. ////// 上一次点击对象76. ///private GameObject prevObject;77.78. ////// 拖动的建筑对象79. ///private GameObject moveObject;80.81. ////// 移动对象的位置信息82. ///private Vector3 movePosition;83.84. ////// 移动偏移数据85. ///private Vector3 moveOffset;86.87. void Awake()88. {89. // 初始化屏幕坐标信息,用于射线检测屏幕是否超出地形之外,个人能力有限,没想到其他的判断方式,90. this.pointList = new Vector3[]91. {92. new Vector3(0f, 0f, 0f),93. new Vector3(Screen.width, 0f, 0f),94. new Vector3(0f, Screen.height, 0f),95. new Vector3(Screen.width, Screen.height, 0f)96. };97. }98.99. void Update()100. {101. // 按下鼠标、轴102. if (Input.GetMouseButtonDown((int)MouseTypeEnum.LEFT)) 103. {104. this.mousePressStatus = true;105.106. // 如果有选中的建筑信息107. if(this.sceneBuilding != null)108. 。

      点击阅读更多内容
      关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
      手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
      ©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.