public DroneCombatStage(ICyberAgent selfAgent, NavMeshAgent navMeshAgent, ICyberAgent opponent) : base(selfAgent, navMeshAgent) { m_opponent = opponent; setStepIntervalSize(0.5f); navMeshAgent.updateRotation = false; m_enableRun = true; }
public CombatStage(ICyberAgent selfAgent, ICyberAgent target, NavMeshAgent navMeshAgent) : base(selfAgent, navMeshAgent) { this.opponent = target; coverPoints = GameObject.FindObjectsOfType <CoverPoint>(); selfAgent.toggleHide(); selfAgent.aimWeapon(); //selfAgent.togglepSecondaryWeapon(); selfAgent.togglePrimaryWeapon(); targetLocations = opponent.getTransfrom().gameObject.GetComponentsInChildren <Collider>(); findTargetLocationToFire(); }
public void updateTargetFinder(Vector3 aimDirection, Vector3 selfPosition) { m_selfPosition = selfPosition; m_aimedDirectionMagnitue = aimDirection.magnitude; Vector3 currentAimedPosition = getAimedPositionFromDirection(aimDirection); m_currentTarget = getNearestTargetAgent(currentAimedPosition); // Only Update the current target if the aim Position changed. //if (currentAimedPosition != m_aimedPosition) //{ // m_currentTarget = tempAgent; //} m_aimedPosition = currentAimedPosition; }
private void initalizeTarget() { GameObject[] playerTaggedObjects = GameObject.FindGameObjectsWithTag(enemyTag); foreach (GameObject obj in playerTaggedObjects) { if (obj != this.gameObject) { m_enemy = obj.GetComponent <MovingAgent>(); if (m_enemy != null) { break; } } } }
/** * Get the target agent closes to the aimed postion. ( interms of the angle) */ private ICyberAgent getNearestTargetAgent(Vector3 aimedPosition) { ICyberAgent tempAgent = null; float minAngle = 999; foreach (ICyberAgent target in m_targets) { if (target != null) { float angle = Vector3.Angle(target.getCurrentPosition() - m_selfPosition, aimedPosition - m_selfPosition); float distance = Vector3.Distance(target.getCurrentPosition(), m_selfPosition); if (angle < minAngle && angle < AUTO_FIRE_ANGLE && target.IsFunctional() && target.getName() != m_selfName && distance < FIRE_DISTANCE) { minAngle = angle; tempAgent = target; } } else { m_targets.Remove(target); } } if (tempAgent == null) { m_targetIndicator.transform.position = new Vector3(0, -10, 0); } else { m_targetIndicator.transform.localPosition = tempAgent.getCurrentPosition(); m_targetIndicatorColor.color = tempAgent.getHealthColor(); m_healthBar.setHealthPercentage(tempAgent.getHealthPercentage()); if (tempAgent.GetType() == typeof(FlyingAgent)) { m_targetIndicatorColor.enabled = false; } else { m_targetIndicatorColor.enabled = true; } } return(tempAgent); }
private void hitOnEnemy(Collider other) { AgentController agentController = other.transform.GetComponentInParent <AgentController>(); if (agentController != null && !m_hit) { ICyberAgent cyberAgent = agentController.getICyberAgent(); if (cyberAgent != null && !m_fireFrom.Equals(cyberAgent.getFaction())) { m_hit = true; cyberAgent.reactOnHit(other, (this.transform.forward) * 3f, other.transform.position); cyberAgent.damageAgent(1); speed = 0; this.gameObject.SetActive(false); GameObject basicHitParticle = ProjectilePool.getInstance().getPoolObject(ProjectilePool.POOL_OBJECT_TYPE.HitBasicParticle); basicHitParticle.SetActive(true); basicHitParticle.transform.position = this.transform.position; basicHitParticle.transform.LookAt(Vector3.up); if (!cyberAgent.IsFunctional()) { MovingAgent movingAgent = cyberAgent as MovingAgent; if (movingAgent != null) { Rigidbody rb = other.transform.GetComponent <Rigidbody>(); if (rb != null) { rb.isKinematic = false; rb.AddForce((this.transform.forward) * 150, ForceMode.Impulse); } Rigidbody hitRb = movingAgent.getChestTransfrom().GetComponent <Rigidbody>(); if (hitRb) { hitRb.AddForce((this.transform.forward) * 2 + Random.insideUnitSphere * 2, ForceMode.Impulse); } } } } } }
public void updateTarget() { float minimumDistance = Vector3.Distance(m_selfAgent.getCurrentPosition(), opponent.getCurrentPosition()); if (opponent == null || !opponent.IsFunctional()) { minimumDistance = 9999; AgentController[] allAgents = GameObject.FindObjectsOfType <AgentController>(); foreach (AgentController agent in allAgents) { ICyberAgent cyberAgent = agent.getICyberAgent(); float distance = Vector3.Distance(m_selfAgent.getCurrentPosition(), cyberAgent.getCurrentPosition()); if (cyberAgent.IsFunctional() && cyberAgent.getFaction() != m_selfAgent.getFaction() && !cyberAgent.getFaction().Equals(AgentController.AgentFaction.Player)) { if (distance < minimumDistance) { minimumDistance = distance; opponent = cyberAgent; } } } } }
public void setOccupent(ICyberAgent agent) { this.occupent = agent; }
public override void setMovableAgent(ICyberAgent agent) { m_movingAgent = (MovingAgent)agent; }
protected void intializeAgentCallbacks(ICyberAgent cyberAgent) { cyberAgent.setOnDestoryCallback(OnAgentDestroy); cyberAgent.setOnDisableCallback(onAgentDisable); cyberAgent.setOnEnableCallback(onAgentEnable); }
public abstract void setTargets(ICyberAgent target);
public BasicMovmentStage(ICyberAgent selfAgent, NavMeshAgent agent) { this.m_selfAgent = selfAgent; this.m_navMeshAgent = agent; m_navMeshAgent.updateRotation = false; }
public void setOccupent(ICyberAgent agent) { m_currentOccupent = agent; }
public override void setTargets(ICyberAgent target) { }
public GuardState(ICyberAgent selfAgent, NavMeshAgent navMeshAgent, BasicWaypoint[] wayPoints) : base(selfAgent, navMeshAgent) { m_wayPoints = wayPoints; m_currentWayPoint = wayPoints[0]; }
public abstract void setMovableAgent(ICyberAgent agent);
public void addTarget(ICyberAgent cybeAgent) { m_targetFinder.AddTarget(cybeAgent); }
private void Awake() { m_movingAgent = this.GetComponent <ICyberAgent>(); }
public void removeTarget(ICyberAgent CybeAgent) { m_targetFinder.AddTarget(CybeAgent); }
public void setTargetToCover(ICyberAgent target) { this.target = target; }
public override void setMovableAgent(ICyberAgent agent) { throw new System.NotImplementedException(); }
public void RemoveTarget(ICyberAgent cyberAgent) { m_targets.Remove(cyberAgent); }
public void addTarget(ICyberAgent cyberAgent) { m_targets.Add(cyberAgent); }
public override void setTargets(ICyberAgent target) { this.opponent = target; }
public override void setMovableAgent(ICyberAgent agent) { }