angrybird爆炸小鸟

其实今天这节应该在特殊小鸟里面写的,但是我有很多搞不明白的地方,大抵就是list集合那里不太懂,我不明白为什么集合里会是脚本,但是我刚刚好像有了一点眉目了,其实list《pig》blocks,blocks是属于pig类的,但是类是在脚本里面定义的,这就很有意思。
还有一些GetComponent的我不太明白,就比如上一节课里面的小鸟受伤换图的代码
private void OnCollisionEnter2D(Collision2D collision)
{
if(collision.gameObject.tag==“Player”)
{
collision.gameObject.GetComponent().Hurt();
}
}
我是想在pig脚本里用bird脚本里面的Hurt方法,但是为什么能直接获取bird脚本呢?我的理解是,collision里面会有碰撞信息,碰撞物体肯定包含bird物体,因此可以直接获取bird脚本,而对于BlackBird脚本呢?
private void OnTriggerEnter2D(Collider2D collision)
{
if(collision.gameObject.tag==“pig”|| collision.gameObject.tag==“wood”)
{
blocks.Add(collision.gameObject.GetComponent());
}
}
他能直接获取到pig脚本呢?也是因为collision里面包含pig物体,因此可以直接获取到pig脚本
在这里我一开始add的时候一直add不进去,因为我忘了勾选isTrigger。
然后优化爆炸小鸟:(爆炸小鸟是本身爆炸)
点击爆炸之后拖尾效果没有
碰撞盒也消失
速度变成0
ps:enable=
setActive()
优化爆炸小鸟的代码实现
void OnClear()
{
rg.velocity = Vector3.zero;速度为0
Instantiate(boom, transform.position, Quaternion.identity);生成爆炸
render.enabled = false;图片不可见
GetComponent().enabled = false;爆炸盒消失
myTrail.ClearTrails();拖尾消失
}

但是到这里还做完,因为我们bird原脚本中next方法是在3s之后自动,destroy然后生成一个爆炸但是我们点击的时候已经生成爆炸了,因此我们要重写这个next方法,将生成爆炸代码注释掉,但是注释掉之后我觉得这里有个bug,因为如果我不点击的话就没有爆炸生成。
因此我直接在ShowSkill()处Destroy掉黑色小鸟,然后将下面的重写方法删除掉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值