攻击Boss
1.加被攻击框
在TheTank节点下,新建空节点,命名为HitBox
添加碰撞检测组件Box Collider 2D,设置为Trigger,并调整碰撞位置和大小
2.脚本
新建脚本BossTankHitBox.cs,添加组件到HitBox上绑定
新建参数,指向BossTankController
public BossTankController bossControl; //指向坦克控制
添加碰撞检测函数
private void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player")
{
//boss受伤
bossControl.TakeHit();
//player弹起效果
PlayerController.sInstance.Bounce();
//隐藏被攻击区域
gameObject.SetActive(false);
}
}
在Unity中设置bossControl指向BossBattle节点
此时,站在Boss边上,直接跳头碰到Boss时,也可以杀死Boss,需优化
添加并列判断PlayerController.sInstance.transform.position.y > transform.position.y
private void OnTriggerEnter2D(Collider2D other)
{
if(other.tag == "Player" && PlayerController.sInstance.transform.position.y > transform.position.y)
{
//boss受伤
bossControl.TakeHit();
//player弹起效果
PlayerController.sInstance.Bounce();
//隐藏被攻击区域
gameObject.SetActive(false);
}
}
3.设置Boss受伤移动后,恢复受伤害节点状态
在BossTankController中,新建参数,指向HitBox
public GameObject hitBox; //受伤害的节点
在移动结束后,EndMovement()中最后面,设置hitBox有效
//重新设置hitBox有效
hitBox.SetActive(true);
绑定hitBox