Unity3D塔防游戏开发——学习笔记(下)

在上一次学习中我们完成了炮台创建以及出售的响应函数绑定,并进行了简单测试,下面我们完成实际的创建与出售操作。

9、具体创建炮塔及出售

我们在GameManage脚本中加入一个新的transform变量basePos用来存放地基的信息,然后在该地基上面创建炮台,我们需要更改SelectBase()函数和CreateTower()函数。

    private void SelectBase()//选择创建炮台的地基
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;
        if (Physics.Raycast(ray, out hit, 200) && EventSystem.current.IsPointerOverGameObject() ==false)
        {
            if(hit.transform.tag=="TowerBase")//点击了地基就进行创建
            {
                //调用显示方法
                ShowSelectPanel(hit.transform);
                basePos = hit.transform;//将选中的地基存入basePos变量中
            }
        }
    }

    public void CreateTower()//创建炮台
    {
        if (selectTower == null)
            return;
        Debug.Log("创建炮台");
        GameObject tempTower = Instantiate(selectTower);//创建炮台
        tempTower.transform.SetParent(basePos, false);//设置炮台位地基的子节点,继承位置信息
        tempTower.transform.localPosition = Vector3.up * 2.6f;//对炮台设置相对地基的z方向偏移量
        //加炮塔的攻击脚本
        InitUI();
    }

    public void SellTower()//出售炮台
    {
        if (basePos.childCount < 2)
            return;
        Debug.Log("出售炮台");
        string tempname=basePos.GetChild(0).name;
        int desi = 0;
        if (tempname == "SelectCanvas")
            desi = 1;
        Destroy(basePos.GetChild(desi).gameObject);//毁掉炮台
        InitUI();
    }

然后就是效果&#x

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值