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); }
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); }
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)); }
// 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; }