コード例 #1
0
        int SwitchAttackIndex(IWeapon weapon)
        {
            AttackMode[] modes = weapon.GetAttackMode();
            if (modes.Length == 0)
            {
                return(-1);
            }

            m_ModeIndex.Clear();
            int length = modes.Length;

            if (entity.Group != null)
            {
                for (int i = 0; i < length; i++)
                {
                    AttackMode mode = modes[i];

                    if (mode.IsInCD())
                    {
                        continue;
                    }

                    if (mode.type == AttackType.Ranged)
                    {
                        m_ModeIndex.Add(i);
                    }
                }
            }
            else
            {
                for (int i = 0; i < length; i++)
                {
                    AttackMode mode = modes[i];

                    if (mode.IsInCD())
                    {
                        continue;
                    }

                    if (selectattackEnemy.SqrDistanceLogic >= mode.minRange * mode.minRange &&
                        selectattackEnemy.SqrDistanceLogic <= mode.maxRange * mode.maxRange)
                    {
                        m_ModeIndex.Add(i);
                    }
                }
            }

            if (m_ModeIndex.Count == 0)
            {
                return(Random.Range(0, modes.Length));
            }
            else
            {
                return(m_ModeIndex[Random.Range(0, m_ModeIndex.Count)]);
            }
        }
コード例 #2
0
 public virtual bool IsInCD(int index = 0)
 {
     return(m_AttackRanges.IsInCD());
 }