简单塔防小游戏

131 阅读2分钟

塔防,即炮塔防御(Tower Defence),也统称TD ,指一类通过在地图上建造炮塔或类似建筑物,以阻止游戏中敌人进攻的策略型游戏,要有阵图。塔防受众很广,游戏模式简单而且可玩性极强,时至今日,塔防在游戏应用中依然是最热门的下载类型之一,比较经典的像《植物大战僵尸》。

  本设计使用当前流行的跨平台游戏引擎Unity3d,编程语言为C#。在游戏中,玩家可以在任何空白的地块上建造各种防御塔用于攻击不同类型的怪物,怪物会按照预定的路线前进,当进入目的地的怪物到达一定数量后游戏会失败;当进入目的地的怪物没有到达指定数量且所有怪物都被击杀后游戏通关。使用Unity3d引擎来设计让UI、游戏地图的布置大幅简化。并通过使用拓展性强的类,使得开发者能快速添加新的怪物、防御塔等,提高开发效率的同时,还降低了游戏的开发成本。

  本文主要从选题背景与意义、可行性与需求分析、游戏设计与功能实现、测试等四个方面,按照制作的流程对本次设计进行论述,对开发的思路、实现以及实现过程中的主要问题都予以描述记录。

游戏画面:

项目结构目录

核心代码:

if ( Input.GetMouseButtonDown(0))
        {
            if (EventSystem.current.IsPointerOverGameObject()==false)
            {
                //开发炮台的建造
                Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
                RaycastHit hit;
                bool isCollider = Physics.Raycast(ray,out hit, 1000, LayerMask.GetMask("MapCube"));
                if (isCollider)
                {
                    MapCube mapCube = hit.collider.GetComponent<MapCube>();
                    if (selectedTurretData != null && mapCube.turretGo == null)
                    {
                        //可以创建 
                        if (money > selectedTurretData.cost)
                        {
                            ChangeMoney(-selectedTurretData.cost);
                            mapCube.BuildTurret(selectedTurretData);
                        }
                        else
                        {
                            //提示钱不够
                            moneyAnimator.SetTrigger("Flicker");
                        }
                    }
                    else if (mapCube.turretGo != null)
                    {
                        
                        // 升级处理
                        
                        //if (mapCube.isUpgraded)
                        //{
                        //    ShowUpgradeUI(mapCube.transform.position, true);
                        //}
                        //else
                        //{
                        //    ShowUpgradeUI(mapCube.transform.position, false);
                        //}
                        if (mapCube == selectedMapCube && upgradeCanvas.activeInHierarchy)
                        {
                            StartCoroutine(HideUpgradeUI());
                        }
                        else
                        {
                            ShowUpgradeUI(mapCube.transform.position, mapCube.isUpgraded);
                        }
                        selectedMapCube = mapCube;
                    }

                }
            }
        }
    }

下载链接:TowerDefenseProject: 简单塔防小游戏