コード例 #1
0
    void Start()
    {
        activeTexture = GetComponent <ParticleSystem>();

        unit = GetComponentInParent <PlayableUnitBehaviour>();

        maxScale = activeTexture.transform.localScale;
    }
コード例 #2
0
 void UnitDies(PlayableUnitBehaviour attackedTarget)
 {
     if (attackedTarget.isDead == false)
     {
         attackedTarget.SetDead();
     }
     attackedTarget = null;
     return;
 }
コード例 #3
0
    public void ClickState()
    {
        Ray ray = mainCamera.ScreenPointToRay(mousePosition);

        if (Physics.Raycast(ray, out hit, maxDistance, mask, QueryTriggerInteraction.Ignore))
        {
            selectionBoxOrigin = mousePosition;
            selectionRect      = new Rect();

            if (hit.transform.gameObject.layer == LayerMask.NameToLayer("PlayableUnit"))
            {
                if (multipleUnitSelection)
                {
                    MultipleUnitSelection();
                    return;
                }
                if (!isDoingSkill)
                {
                    if (selectedUnit == null)
                    {
                        for (int i = 0; i < selectedUnits.Count; i++)
                        {
                            selectedUnits[i].isSelected = false;
                        }
                        selectedUnits.Clear();
                        selectedUnit = hit.transform.GetComponent <PlayableUnitBehaviour>();
                    }
                    else
                    {
                        SelectedUnitClear();
                    }
                    selectedUnit = hit.transform.GetComponent <PlayableUnitBehaviour>();
                }
            }
            if (hit.transform.gameObject.layer == LayerMask.NameToLayer("Ground"))
            {
                if (!multipleUnitSelection && !isDoingSkill)
                {
                    if (selectedUnit == null)
                    {
                        for (int i = 0; i < selectedUnits.Count; i++)
                        {
                            selectedUnits[i].isSelected = false;
                        }
                        selectedUnits.Clear();
                    }
                    else
                    {
                        SelectedUnitClear();
                    }
                }
            }
        }
        isDoingSkill = false;
    }
コード例 #4
0
 void ClearUnit()
 {
     unitsCanAttack.Remove(selectedTarget.transform);
     distanceFromTarget = Mathf.Infinity;
     if (selectedTarget.isDead == false)
     {
         selectedTarget.SetDead();
     }
     targetTransform = null;
     selectedTarget  = null;
     closestObject   = null;
     SetIdle();
 }
コード例 #5
0
 public void SkillUpdate()
 {
     circleRenderer.enabled = true;
     hitColliders           = Physics.OverlapSphere(transform.position, skillCircleRadius, attackMask);
     for (int i = 0; i < hitColliders.Length; i++)
     {
         PlayableUnitBehaviour attackedTarget = hitColliders[i].GetComponent <PlayableUnitBehaviour>();
         attackedTarget.PlayableUnitTakeDamage(attack * 5, this);
         if (attackedTarget.hitPoints <= 0)
         {
             UnitDies(attackedTarget);
             return;
         }
     }
     hitColliders           = null;
     isDoingSkill           = false;
     circleRenderer.enabled = false;
 }
コード例 #6
0
 void FindClosestObject()
 {
     for (int i = 0; i < unitsCanAttack.Count; i++)
     {
         if (closestObject != null)
         {
             if (Vector3.Distance(transform.position, unitsCanAttack[i].position) <=
                 Vector3.Distance(transform.position, closestObject.position))
             {
                 closestObject = unitsCanAttack[i];
             }
         }
         else
         {
             closestObject = unitsCanAttack[i];
         }
     }
     selectedTarget  = closestObject.GetComponent <PlayableUnitBehaviour>();
     targetTransform = closestObject;
 }
コード例 #7
0
 void SelectedUnitClear()
 {
     selectedUnit.isSelected = false;
     selectedUnit            = null;
 }