コード例 #1
0
    private EdibleTrait[] GetEdibleTraits(RaycastHit[] hits)
    {
        List <EdibleTrait> edibleTraits = new List <EdibleTrait>();

        foreach (RaycastHit hit in hits)
        {
            if (ReferenceEquals(hit.transform.gameObject, this.gameObject))
            {
                continue;
            }
            //Is the thing edible?
            EdibleTrait edibleTrait = hit.transform.GetComponent <EdibleTrait>();
            if (edibleTrait)
            {
                // wolves won't eat wolves
                WolfController wolfController = hit.transform.GetComponent <WolfController>();
                if (!wolfController)
                {
                    // They aren't vegetarien
                    MeatTrait meatTrait = hit.transform.GetComponent <MeatTrait>();
                    if (meatTrait)
                    {
                        HealthTrait healthTrait = hit.transform.GetComponent <HealthTrait>();
                        if (healthTrait && !healthTrait.isAlive)
                        {
                            edibleTraits.Add(edibleTrait);
                        }
                    }
                }
            }
        }
        return(edibleTraits.ToArray());
    }
コード例 #2
0
    /// <summary>
    /// Gets all the food things that are alive, edible, attackable, not a wolf and not self
    /// </summary>
    /// <param name="hits"></param>
    /// <returns></returns>
    private AttackableTrait[] GetAllAliveAttackableFoodTraits(RaycastHit[] hits)
    {
        List <AttackableTrait> attackingTraits = new List <AttackableTrait>();

        foreach (RaycastHit hit in hits)
        {
            if (ReferenceEquals(hit.transform.gameObject, this.gameObject))
            {
                continue;
            }
            //Is the thing edible?
            EdibleTrait edibleTrait = hit.transform.GetComponent <EdibleTrait>();
            if (edibleTrait)
            {
                // wolves won't eat wolves
                WolfController wolfController = hit.transform.GetComponent <WolfController>();
                if (!wolfController)
                {
                    // They aren't vegetarien
                    MeatTrait meatTrait = hit.transform.GetComponent <MeatTrait>();
                    if (meatTrait)
                    {
                        AttackableTrait attackableTrait = hit.transform.GetComponent <AttackableTrait>();
                        if (attackableTrait)
                        {
                            attackingTraits.Add(attackableTrait);
                        }
                    }
                }
            }
        }
        return(attackingTraits.ToArray());
    }