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++;
}