unity从0开始摸鱼日记28,敌人的制作

本文记录了使用Unity制作敌人的过程,包括敌人两种状态——进攻和友军的转换逻辑。当敌人碰撞到挡板后变为友军(绿色),可攻击其他进攻状态的敌人,碰到墙壁则重新变为进攻状态。此外,还介绍了如何动态更改敌人的tag,以及根据关卡设置最大敌人数和随机生成敌人的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

4月29

其实昨天就写好了,太晚了没码字

首先敌人有两个状态,进攻转态和友军状态,当被挡板反弹后,敌人转换为友军状态(绿色),此时可以攻击进攻状态的其他敌人,其他敌人撞到这样的友军会被销毁,当碰到墙壁后,会再次变成进攻状态,自动锁定玩家

状态转换

private void OnTriggerEnter2D(Collider2D collision)
    {
        if (collision.transform.tag == "dangban")
        {
            isAttack = false;
            Vector2 pPos = (Vector2)collision.transform.position;
            Vector2 speedPos = (Vector2)transform.position - pPos;
            rb.velocity = speedPos * speed;

        }
    }
 if (collision.transform.tag == "Wall")
        {
            isAttack = true;
            //rb.velocity += rb.velocity*0.6f;

        }

友军击杀敌人

if(collision.transform.tag == "newEnemy")
        {
            if (isAttack == true)
            {
                Instantiate(enemyDie,transform.position, Quaternion.identity);
                enemyDie.Play();
                Destroy(this.gameObject);
                CreatEnemy.Instance.AliveEnemy--;
            }
        }

状态判断,并动态更改tag

if (isAttack)
        {
            Vector3 playerPos = player.transform.position;
            move(playerPos);
            this.tag = eTag;
            sp.color = Color.red;
        }
        else
        {
            sp.color = Color.green;
            this.tag = nTag;
        }

 

接下来是创建敌人的部分,每一关都有最大敌人数,上限可以设置EnemyCount,在游戏中设置了6个出生点,当敌人未到上限,每过一段时间会在随机位置生成一个敌人

waitTime += Time.deltaTime;
        if (AliveEnemy <= EnemyCount && waitTime >= 3)
        {
            CreatNew();
        }
 void CreatNew()
    {
        waitTime = 0;
        int i = Random.Range(0, 6);
        Instantiate(Enemy, BornPoint[i].transform.position,Quaternion.identity);
        AliveEnemy++;

    }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值