private void Update() { if (transform.parent == null) //没有射中目标,继续飞 { transform.Translate(0, 0, speed * Time.deltaTime); if (Vector3.Distance(initPos, transform.position) > 500) //飞出一定范围自动销毁 { DestroySelf(); } if (target != null && target.state != EnemyState.death) //如果目标活着朝向目标 { transform.LookAt(target.hitPos); //到达有效范围,调用目标受伤方法,成为目标子物体(插在目标身上) if (Vector3.Distance(target.hitPos.position, transform.position) <= 1) { target.Damage(damage, pagoda); //拿取防御塔信息 pagoda.PlayKill(target.transform.position, (-damage).ToString(), Color.blue); transform.SetParent(target.hitPos); } } } else if (target.state == EnemyState.death) //射中后,只要目标一死就销毁 { DestroySelf(); } }
//死亡方法 public override void Death(Pagoda murderer) { base.Death(murderer); gameObject.layer = LayerMask.NameToLayer("DeadBody"); //层设置为"DeadBody" state = EnemyState.death; anim.Play("death"); Util.Instance.AddTimeTask(() => transform.SetParent(enemyPool), 5); //5秒后返回对象池 GameData.Instance.AddGold(gold); //获得金币奖励 PagodaMenu.Instanc.RefreshMenu(); //刷新菜单 //标记处决者 murderer.PlayKill(murderer.transform.position, "击杀", Color.red); }