Beispiel #1
0
    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();
        }
    }
Beispiel #2
0
    //死亡方法
    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);
    }