public DroneCombatStage(ICyberAgent selfAgent, NavMeshAgent navMeshAgent, ICyberAgent opponent) : base(selfAgent, navMeshAgent)
 {
     m_opponent = opponent;
     setStepIntervalSize(0.5f);
     navMeshAgent.updateRotation = false;
     m_enableRun = true;
 }
Beispiel #2
0
 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();
 }
Beispiel #3
0
    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;
                }
            }
        }
    }
Beispiel #5
0
    /**
     * 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);
                        }
                    }
                }
            }
        }
    }
Beispiel #7
0
    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;
 }
Beispiel #9
0
 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);
 }
Beispiel #18
0
 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();
 }
Beispiel #22
0
 public void RemoveTarget(ICyberAgent cyberAgent)
 {
     m_targets.Remove(cyberAgent);
 }
Beispiel #23
0
 public void addTarget(ICyberAgent cyberAgent)
 {
     m_targets.Add(cyberAgent);
 }
Beispiel #24
0
 public override void setTargets(ICyberAgent target)
 {
     this.opponent = target;
 }
 public override void setMovableAgent(ICyberAgent agent)
 {
 }