예제 #1
0
    public override void OnSignalRecieved(eObject source, string[] signal)
    {
        base.OnSignalRecieved(source, signal);

        switch (signal[0])
        {
        case "playerPos":
            hasPos      = true;
            playerPos.x = float.Parse(signal[1]);
            playerPos.y = float.Parse(signal[2]);
            playerPos.z = float.Parse(signal[3]);
            break;

        //case "damage":
        //    health -= float.Parse(signal[1]);
        //    Debug.Log(health);
        //    Vector3 diff;
        //    diff.x = float.Parse(signal[2]);
        //    diff.y = float.Parse(signal[3]);
        //    diff.z = float.Parse(signal[4]);

        //    diff = transform.position - diff;
        //    diff.y = 0;
        //    hitbackSpeed = diff.normalized * 5f; //5: hitback speed
        //    break;

        case "attack":
            TriggerEvent(this, "attack", attackGap, false);

            if (hasPos && Vector3.Distance(transform.position, playerPos) <= attackRange)
            {
                TriggerEvent(this, "attackGo", channelingTime, false);
                slowed = true;
            }
            break;

        case "attackGo":
            Instantiate(attackObject, transform.position + transform.rotation * new Vector3(0.0f, 0.3f, 0.75f), transform.rotation).
            GetComponent <Enemy_StrightBulletObj>().target = GameObject.FindGameObjectWithTag("Player").transform;
            slowed = false;
            break;

        case "playerEnter":
            //TriggerEvent (this, "attack");
            hasPos = true;
            break;

        case "playerExit":
            hasPos = false;
            break;

        case "attackThunder":
            TriggerEvent(this, "attackThunder", thunderGap, false);

            Vector2 rnd     = Random.insideUnitCircle;
            eObject thunder = Instantiate(m_thunderPrefab, transform.position + new Vector3(rnd.x, 0, rnd.y) * 8.0f, Quaternion.identity).GetComponent <eObject>();
            thunder.TriggerEvent(thunder, "Activate", 2.5f);
            break;
        }
    }
예제 #2
0
    public override void OnObjectEnter(eObject obj)
    {
        base.OnObjectEnter(obj);

        if (obj.GetState("CollectableObject") > 0)
        {
            if (!objectList.Exists((eObject e) => e == obj ? true : false))
            {
                objectList.Add(obj);
            }
        }
        if (obj.GetState("autoCollect") > 0)
        {
            m_slime.TriggerEvent(obj, "pickUp");
        }
    }