2D游戏入门——小狐狸系列(二十三)解决bug

Session23:优化代码Fix code

敌人死亡的bug

现在主角把敌人踩死之后其实还会进行碰撞检测,导致爆炸动画重复播放,我们要做的就是在敌人死亡后取消碰撞体

 	void Death()
    {
        //取消碰撞体必须写在Death里,如果提前取消的话受重力影响,会边爆炸边下落
        GetComponent<Collider2D>().enabled = false;
        Destroy(gameObject);
    }

如果组件只需使用一次,可以使用这种方法来调用组件,而无需声明。

吃cherry的bug

现在有一个问题是,当角色的移动速度过快时,角色身上的两个collider会都碰到cherry,导致score一次性+2

我们可以为cherry添加动画和动画事件来解决这个问题

public class Cherry : MonoBehaviour
{
    private void Death()
    {
        FindObjectOfType<PlayerController>().CherryCount();
        Destroy(gameObject);
    }
}

下面是PlayerController中的改动:

	private void OnTriggerEnter2D(Collider2D collision)
    {
        //吃到樱桃
        if (collision.tag == "Collection")
        {
            collectionAudio.Play();
            collision.GetComponent<Animator>().Play("isGot");
        }
        //碰到DeadLine
        if (collision.tag == "DeadLine")
        {
            GetComponent<AudioSource>().enabled = false;
            //延时2s
            Invoke("Restart", 2f);
        }
    }

	public void CherryCount()
    {
        score++;
        cherryNumber.text = score.ToString();
    }

Cherry的isGot动画结束调用Death()即可

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值