Boss释放地雷
1.新建地雷节点
添加地雷到场景,命名为TankBossMine,初步设置好位置
2.新建动画
在TankBossMine节点上,新建动画BossTank_Mine,保存到Animations/Boss文件夹下
制作动画
3.碰撞检测
添加碰撞检测Circle Collider 2D,调整半径大小,并设置为Trigger
4.脚本
新建脚本BossTankMine.cs,添加组件到TankBossMine节点上绑定
添加参数,指向爆炸特效
public GameObject explosion; //爆炸特效
新建碰撞检测函数
private void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
//销毁地雷
Destroy(gameObject);
//爆炸特效
Instantiate(explosion, transform.position, transform.rotation);
//伤害角色
PlayerHealthController.sInstance.DealDamage();
}
}
找到Prefabs/Effects文件夹下的死亡特效DeathEffect,绑定到explosion上
5.预制体
将TankBosMine拖到Prefabs/Boss文件夹下,制作成预制体,并在场景中删除节点
6.释放地雷
在BossTankController.cs中添加参数([Header(“移动参数”)]后面)
public GameObject mine; //地雷
public Transform minePoint; //释放地雷点
public float timeBetweenMines; //释放地雷间隔时间
private float mineCounter; //释放地雷间隔计数器
在case bossState.hurt:
里,将释放地雷计数器清零
case bossState.hurt:
if(hurtCounter > 0)
{
hurtCounter -= Time.deltaTime;
if(hurtCounter <= 0)
{
currentState = bossState.moving;
//释放地雷计数器清零
mineCounter = 0;
}
}
break;
在case bossState.moving:
里,判断moveRoght之后,添加代码:判断地雷计数器,释放地雷
mineCounter -= Time.deltaTime;
if(mineCounter <= 0)
{
mineCounter = timeBetweenMines;
//释放地雷
Instantiate(mine, minePoint.position, minePoint.rotation);
}
切换到Unity界面,在TheTank节点下,新建空节点MinePoint,表示释放地雷位置,设置好坐标位置
设置好BossBattle节点上新绑定的参数
7.受到攻击时,销毁所有地雷
在BossTankMine.cs中,新建函数Explode()(销毁,爆炸效果)
//销毁,爆炸效果
public void Explode()
{
//销毁地雷
Destroy(gameObject);
//爆炸特效
Instantiate(explosion, transform.position, transform.rotation);
}
在BossTankController.cs中,TakeHit()内后面,加入销毁逻辑
//销毁地雷
BossTankMine[] allMines = FindObjectsOfType<BossTankMine>();
if(allMines.Length > 0)
{
foreach (BossTankMine foundMine in allMines)
{
//销毁,爆炸效果
foundMine.Explode();
}
}