示例#1
0
    protected override void Shoot0()
    {
        TargetAble target = targets[0];
        Vector3    point  = target.GetPosition();

        turret.LookAt(point);
        laserBeam.localRotation = turret.localRotation;
        float d = Vector3.Distance(turret.position, point);

        laserBeamScale.z        = d;
        laserBeam.localScale    = laserBeamScale;
        laserBeam.localPosition =
            turret.localPosition + 0.5f * d * laserBeam.forward;
    }
    protected override bool ValidateTarget(TargetAble target)
    {
        if (!(target is GameActor))
        {
            return(false);
        }
        if (!(owner is BlockerActor))
        {
            return(false);
        }
        GameActor    actor   = (GameActor)target;
        BlockerActor blocker = (BlockerActor)owner;
        bool         isBlock = blocker.IsBlockByMe(actor);

        return(isBlock);
    }
    IEnumerator checkTarget()
    {
        //Check if old Target is valid
        if (target)
        {
            if (targetScript.isDestroyed())
            {
                target = null;
            }
            else if (Vector3.Distance(target.position, transform.position) > aggroRange)
            {
                target = null;
            }
        }
        if (!target)
        {
            Collider[] hitColliders = Physics.OverlapSphere(EyePosition.position, aggroRange);
            foreach (Collider coll in hitColliders)
            {
                if (coll.tag == "Player" || coll.tag == "PlayerMinion")
                {
                    //First Element with Tag Player/PlayerMinion gets Attacked/Targeted
                    targetScript = coll.GetComponent <TargetAble>();
                    if (targetScript)
                    {
                        target = coll.transform;
                        break;
                    }
                }
            }
        }

        yield return(new WaitForSeconds(0.2f));

        StartCoroutine(checkTarget());
    }
示例#4
0
    void OnTriggerEnter(Collider info)
    {
        if (active && IsInLayerMask(info.gameObject, targetMask))
        {
            //Deactivate the blast
            rigidbody.velocity = Vector3.zero;
            active             = false;
            //Do Damage
            TargetAble targetScript = info.GetComponent <TargetAble>();
            if (targetScript)
            {
                targetScript.doDamage(damage, blastColor);
            }

            //Do Explosion
            if (PartikelPoolName != "")
            {
                GameObject go = GameObjectPool.Instance.Spawn(PartikelPoolName, transform.position, Quaternion.identity);
                go.particleSystem.Play();
                go.SendMessage("Reset", SendMessageOptions.DontRequireReceiver);
                go.SendMessage("SetPool", PartikelPoolName, SendMessageOptions.DontRequireReceiver);
            }
        }
    }