Unity2d 坦克大战 (二)道具效果实现

本文介绍Unity2D坦克大战中道具效果的实现,包括增加生命、暂停敌人行动、钢铁化砖块、杀死敌人、坦克升级和无敌状态。通过碰撞检测和标签系统,结合静态变量和协程来控制游戏逻辑。遇到使用SendMessage调用方法的问题,最终选择直接在Player脚本中处理。

具体代码资源链接:https://download.youkuaiyun.com/download/qq_36680300/80971020

先说思路,因为是拾取道具后触发效果,所以被拾取的道具上需要有一个2d的碰撞器,设置为isTrigger,新添加标签为Bonus。

最开始我是想直接在Bonus上挂一个脚本,然后在Player脚本中通过OnTriggerEnter2D函数,以sendmessage的方式去调写好的方法,想的是比较规范。

但出现了一个问题,以sendmessage形式调用的方法里如果含有函数嵌套,比如说一个方法里需要延时调用另一个方法,运行的结果虽然不会报错,但嵌套的方法是无效的

尝试了许久无法解决这个问题,只能退而求其次绕过sendmessage把这些方法直接全放Player脚本里了。

 // tank拾取奖励
    //0:生命,1:钟表,2:铲子,3:炸弹,4:星星,5:头盔
    private void OnTriggerEnter2D(Collider2D collision)
    {
   
   
        switch (collision.tag)
        {
   
   
            // 增加生命
            case "Life":
                BonusPlay();
                PlayerManager.lifeValue++;
                Destroy(collision.gameObject);
                break;
            // 暂停敌人行动
            case "Clock":
                BonusPlay();
                PuaseEnemy();
                Destroy(collision.gameObject);
                break;
            // 升级Heart周围Wall为Barriar
            case "Shovel":
                BonusPlay();
                ReplaceBarriar();
                Destroy(collision.gameObject)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值