示例#1
0
    public IEnumerator Attack()
    {
        float startTime = Time.time;

        yield return(new WaitForFixedUpdate());

        while (!SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, attackDistance))
        {
            controller.Move(PlayerController.instance.transform.position);
            yield return(new WaitForFixedUpdate());
        }
        controller.LookAt(PlayerController.instance.transform.position);
        // Start Charge
        controller.attacking = true;
        sr.color             = chargeColor;
        yield return(new WaitForSeconds(attackChargeTime));

        // Attack
        PerformAttack();
        while (controller.attacking)
        {
            yield return(null);
        }
        sr.color = baseColor;
    }
示例#2
0
 public void MaintainDistance()
 {
     if (!SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, targetDistanceMax))
     {
         controller.Move(PlayerController.instance.transform.position);
     }
     else if (SF.GetWithinRange(transform.position, PlayerController.instance.transform.position, targetDistanceMin))
     {
         controller.MoveAway(PlayerController.instance.transform.position);
     }
 }
示例#3
0
 public override bool TryAction()
 {
     if (minionControl.target != null && SF.GetWithinRange(transform.position, minionControl.target.transform.position, 1.5f))
     {
         Attack();
         return(true);
     }
     else
     {
         return(false);
     }
 }
示例#4
0
 void Update()
 {
     if (PlayerController.localPlayer != null && SF.GetWithinRange(PlayerController.localPlayer.transform.position, transform.position, 1.5f))
     {
         if (Input.GetKeyDown("e"))
         {
             if (inventoryObj.activeInHierarchy && currentChest == this)
             {
                 CloseInventory();
             }
             else if (currentChest == null)
             {
                 DisplayInventory();
             }
         }
     }
     else if (currentChest == this)
     {
         CloseInventory();
     }
 }
示例#5
0
 public override void TryMove()
 {
     if (Input.GetKey(KeyCode.Mouse0))
     {
         RaycastHit hit;
         int        layerMask = ~(1 << gameObject.layer);      // Ignore gameObject.layer
         if (SF.MouseRaycast(out hit, layerMask) && !UnityEngine.EventSystems.EventSystem.current.IsPointerOverGameObject() && !SF.GetWithinRange(hit.point, transform.position, .2f) && !PointerIconCtrl.IsActive())
         {
             if (Input.GetKey(KeyCode.LeftCommand))
             {
                 targetMove = true;
             }
             else if (!targetMove)
             {
                 Move(hit.point);
             }
             if (targetMove)
             {
                 targetMovePos = hit.point;
             }
         }
         else
         {
             SetMoving(relativeMoveBone.transform.position);
         }
     }
     else if (targetMove)
     {
         Move(targetMovePos);
         if (SF.GetWithinRange(transform.position, targetMovePos, .5f) || Input.GetKeyDown(KeyCode.Mouse0))
         {
             targetMove = false;
         }
     }
     else
     {
         SetMoving(relativeMoveBone.transform.position);
     }
 }
示例#6
0
    public IEnumerator Heal()
    {
        EnemyController healTarget = GetHealTarget();

        while (healTarget != null && !SF.GetWithinRange(transform.position, healTarget.transform.position, healDistance))
        {
            controller.Move(healTarget.transform.position);
            yield return(new WaitForFixedUpdate());
        }
        if (healTarget != null)
        {
            sr.color = healChargeColor;
            yield return(new WaitForSeconds(attackChargeTime));

            if (healTarget != null)
            {
                // Heal
                healTarget.Heal(healAmount);
            }
            sr.color = baseColor;
        }
    }
示例#7
0
 public override void TryMove()
 {
     if (target == null)
     {
         foreach (Collider coll in Physics.OverlapSphere(transform.position, 10f))
         {
             Rigidbody rb = coll.attachedRigidbody;
             if (rb != null && rb.tag == "Team2" && rb.gameObject.layer == 8)
             {
                 target = coll.attachedRigidbody.gameObject.GetComponent <Targeting>().targetableObj;
                 targeting.SetTarget(target);
             }
         }
     }
     else if (target != null && !SF.GetWithinRange(transform.position, target.transform.position, 1f))
     {
         Move(target.transform.position);
     }
     else
     {
         SetMoving(transform.position);
     }
 }
示例#8
0
 void Update()
 {
     if (hasAuthority)
     {
         if (PlayerController.localPlayer != null && SF.GetWithinRange(PlayerController.localPlayer.transform.position, transform.position, 3f))
         {
             if (Input.GetKeyDown("e"))
             {
                 if (baseMenuObj.activeInHierarchy)
                 {
                     baseMenuObj.SetActive(false);
                 }
                 else
                 {
                     baseMenuObj.SetActive(true);
                 }
             }
         }
         else
         {
             baseMenuObj.SetActive(false);
         }
     }
 }