Unity2D学习笔记Day8:添加敌人——踩到敌人时消灭(补8.15)

学习资源:B站 M_Studio《Unity教程2D入门》13

Unity Assets:Sunnyland

Day8

预期效果:若玩家踩到敌人的头上,则可以将敌人消灭

准备工作

1.将素材导入

2.将素材尺寸调整好——Pixels Per Unit设为16

3.创建2Dsprite

4.给该sprite添加图片,一般默认是最常用的一张图——Sprite属性
如果不显示,则需要调整sorting layer

5.添加Rigidbody2D 和 collider
如果是tile碰撞体(记得锁定RigidBody的z轴)

6.添加animator

消灭敌人

注意:这里因为不是用isTrigger来设置敌人的碰撞体,所以和Cherry的设置有点不同。

  1. OnTriggerEnter2D->OnCollisionEnter2D
  2. 代码里不能直接写collision.tag == “Enemy”。
private void OnCollisionEnter2D(Collision2D collision)
    {
        if(collision.gameObject.tag == "Enemy")
        {
            Destroy(collision.gameObject);
        }
    }

该函数为内置的函数,意为:当碰到2D碰撞体时执行

但现在这个代码只是实现了当Player碰到敌人时,敌人消失。

为了实现“踩到敌人将敌人消灭”我的判断条件是当Player的动画状态是falling时…判断条件不唯一,根据需要来

如果不是falling的状态则做出另外的反应(代码省略)

	private void OnCollisionEnter2D(Collision2D collision)
    {
        //只有在下落的时候
        if(anim.GetBool("isFalling"))
        {
            //踩到敌人
            if (collision.gameObject.tag == "Enemy")
            {
                //敌人才会消失
                Destroy(collision.gameObject);
                //踩完后垫着敌人小跳一下
                rb.velocity = new Vector3(rb.velocity.x, jumpforce * Time.deltaTime);
                anim.SetBool("isJumping", true);
            }
        }
        else
        {
            //触发别的效果
        }
    }

版权声明:本文为weixin_45859596原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。