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