Пример #1
0
    private void Block(StateController controller)
    {
        if (!controller.isBlocking)
        {
            controller.StopNavAgentFor(controller.blockPauseDuration);
            AkSoundEngine.PostEvent(controller.akEventHurt, controller.gameObject);
            controller.PlayBlockAnimation();
        }

        if (Time.time >= controller.blockReadyTime)
        {
            controller.blockReadyTime = Time.time + controller.blockPauseDuration;
            SkeletonDamagable skeleton = controller.gameObject.GetComponent <SkeletonDamagable>();
            skeleton.DealHealing(30);
            Debug.Log("Enemy healed " + skeleton.blockHealing);
        }
    }
Пример #2
0
    private void Teleport(StateController controller)
    {
        SkeletonDamagable boss = controller.GetComponent <SkeletonDamagable>();

        if (boss.currentHealth < boss.previousHealth && Time.time >= controller.lastTeleport)
        {
            boss.previousHealth     = boss.currentHealth;
            controller.lastTeleport = Time.time + controller.teleportCooldownTime;
            //play teleport particle system
            controller.teleportFirst = Instantiate(controller.teleportPrefab, controller.gameObject.transform.position, controller.gameObject.transform.rotation);

            //teleport boss to random point on platform
            Transform[] points      = controller.teleportPoints;
            int         location    = (int)(Random.Range(0f, points.Length - 1));
            Vector3     randomPoint = points[location].position;
            controller.gameObject.transform.position = randomPoint;

            //play teleport particle system again at new location
            controller.teleportSecond = Instantiate(controller.teleportPrefab, controller.gameObject.transform.position, controller.gameObject.transform.rotation);
        }
    }