コード例 #1
0
        protected GameObject[] GetTargets()
        {
            if (null == Origin || null == Vision)
            {
                return(null);
            }
            int mask = 0;

            if (TargetDetectionType.Enemy == TargetDetectionType || TargetDetectionType.Both == TargetDetectionType)
            {
                mask = LayerMaskValues.ENEMY;
            }
            if (TargetDetectionType.Player == TargetDetectionType || TargetDetectionType.Both == TargetDetectionType)
            {
                mask |= LayerMaskValues.PLAYER;
            }
            Collider[] targets = Environment.GetEntitiesInSight(
                mask,
                Origin,
                Vision.DetectionRadius,
                Vision.DetectionAngle,
                Vision.HeightOffset,
                Vision.MaxHeightDifference,
                true
                );
            GameObject[] targetsGO = GameObjectUtilities.GetGameObjects(targets);
            if (IsAoE)
            {
                return(targetsGO);
            }
            GameObject[] nearest = { Environment.GetNearestObject(Origin.position, targetsGO) };
            return(nearest);
        }
コード例 #2
0
        protected EntityController GetTarget()
        {
            if (null == Vision)
            {
                return(null);
            }
            Collider[] targets = Environment.GetEntitiesInSight(
                LayerMaskValues.PLAYER,
                transform,
                GetMaxAttackRange(),
                Vision.DetectionAngle,
                Vision.HeightOffset,
                Vision.MaxHeightDifference,
                true
                );
            GameObject[] targetsGO = GameObjectUtilities.GetGameObjects(targets);
            GameObject   nearest   = Environment.GetNearestObject(transform.position, targetsGO);

            if (null == nearest)
            {
                return(null);
            }
            EntityController target = nearest.GetComponent <EntityController>();

            return(target);
        }
コード例 #3
0
 public GameObject GetNearestEnemyInRange(bool useHeightDifference = true)
 {
     Collider[] enemies = GetEnemiesInRange(useHeightDifference);
     if (0 == enemies.Length)
     {
         return(null);
     }
     GameObject[] enemiesGO = GameObjectUtilities.GetGameObjects(enemies);
     return(Environment.GetNearestObject(transform.position, enemiesGO));
 }
コード例 #4
0
ファイル: CombatPad.cs プロジェクト: uscomics/Gold_Venus
        // Update is called once per frame
        void Update()
        {
            Collider[] enemies = _playerControllerScript.GetEnemiesInSight();
            if (0 == enemies.Length)
            {
                HideCombatUI();
            }
            else
            {
                GameObject[] enemiesGO = GameObjectUtilities.GetGameObjects(enemies);
                ShowCombatUI();
                Attack punch    = _playerControllerScript.Attacks[(int)PlayerAttackIndex.Punch];
                Attack kick     = _playerControllerScript.Attacks[(int)PlayerAttackIndex.Kick];
                Attack block    = _playerControllerScript.Attacks[(int)PlayerAttackIndex.Block];
                Attack jumpkick = _playerControllerScript.Attacks[(int)PlayerAttackIndex.Jumpkick];
                Attack super    = _playerControllerScript.Attacks[(int)PlayerAttackIndex.Super];
                if (punch.IsUseable(enemiesGO))
                {
                    punchButton.SetButtonStateOn();
                }
                else
                {
                    punchButton.SetButtonState(ButtonState.Disabled);
                }
                if (kick.IsUseable(enemiesGO))
                {
                    kickButton.SetButtonStateOn();
                }
                else
                {
                    kickButton.SetButtonState(ButtonState.Disabled);
                }
                if (block.IsUseable(enemiesGO))
                {
                    blockButton.SetButtonStateOn();
                }
                else
                {
                    blockButton.SetButtonState(ButtonState.Disabled);
                }
                if (jumpkick.IsUseable(enemiesGO))
                {
                    jumpkickButton.SetButtonStateOn();
                }
                else
                {
                    jumpkickButton.SetButtonState(ButtonState.Disabled);
                }
                _superInRange = super.IsUseable(enemiesGO);
            }
            AttackType attack = GetAttack();

            Attack(attack);
            CurrentAttack = attack;
        }