void Start()
	{
		objectAsReference.transform.position = transform.position;
		
		//set up the resting position gameobject
		if(transform.Find(nameOfRestingPosition) == null )
		{
			restingPosition = new GameObject( nameOfRestingPosition );
			restingPosition.transform.parent = transform;
			restingPosition.transform.position = transform.position;
			
			restingPosition.transform.localRotation = Quaternion.Euler( new Vector3( 90f, 0f, 0f) );
			restingPosition.transform.localPosition -= new Vector3( 0f, 0.4f, 0f );
			
		}
		else
		{
			restingPosition = transform.Find(nameOfRestingPosition).gameObject;
		}
		
		//set up cache correctly
		brain = transform.parent.parent.GetComponent<AIStateManager>();
		weaponController = transform.parent.parent.GetComponent<AIWeaponController>();
		
	}
Ejemplo n.º 2
0
    public override void Act(Transform player, Transform npc)
    {
        //Set the target position as the player position
        destPos = player.position + new Vector3(0.0f, 1.0f, 0.0f);

        npc.GetComponent<AICarController>().throttle = 1.0f;

        //Calculate the steering value
        Vector3 RelativeWaypointPosition = npc.InverseTransformPoint(new Vector3(destPos.x, npc.position.y, destPos.z));
        npc.GetComponent<AICarController>().steer = RelativeWaypointPosition.x / RelativeWaypointPosition.magnitude;

        
        //Initialise the weapon controller for attack state
        if (!bAIWeaponInitialised)
        {
            weapon = npc.GetComponent<AIWeaponController>();
            npcTransform = npc;
            bAIWeaponInitialised = true;
        }

        Transform turret = weapon.Turret;
        Quaternion turretRotation = Quaternion.LookRotation(destPos - turret.position);
        turret.rotation = Quaternion.Slerp(turret.rotation, turretRotation, Time.deltaTime * curRotSpeed);

        //Shoot shouldn't call every frame
        if (!bStartShooting)
        {
            //Shoot bullet/Missiles towards the player
            ShootShells();
            bStartShooting = true;
        }
    }
Ejemplo n.º 3
0
    void Start()
    {
        // If a Player target hasn't been set then find one.
        if (Player == null)
        {
            Player = GameObject.FindGameObjectWithTag(TargetTag);
        }

        // Get AIWeaponController component.
        _AIWeaponController = this.GetComponentInChildren <AIWeaponController> ();
    }
Ejemplo n.º 4
0
    public void SetupAI(AISettings settings)
    {
        aiEnabled            = false;
        this.maxLP           = settings.MaxLP;
        this.minimumDistance = settings.MinDistance;
        GetComponent <AIWeaponController>().accuracy         = settings.Accuracy;
        GetComponent <AIWeaponController>().cooldown         = settings.CoolDown;
        GetComponent <AIWeaponController>().maxExtraCooldown = settings.MaxExtraCooldown;
        GetComponent <AIWeaponController>().shootDistance    = settings.ShootDistance;
        GetComponent <AIWeaponController>().Setup();
        if (target == null)
        {
            GameObject go = GameObject.FindGameObjectWithTag(enemyTag);
            if (go != null)
            {
                target = go.transform;
            }
        }

        lp = maxLP;
        this.transform.position = new Vector3(RoundedMath.Mult(Mathf.RoundToInt(this.transform.position.x / boxFactor), boxFactor), this.transform.position.y);

        aiMovement         = GetComponent <AIMovement>();
        aiWeaponController = GetComponent <AIWeaponController>();

        ea                    = new EnvironmentAnalyser();
        aiMemory              = new AIMemory(windowSizeX, windowSizeY, this.transform.position, ea, this, boxFactor);
        generalSolver         = new GeneralSolver(aiMemory);
        aiMemory.MaxAreaWidth = settings.MaxAreaWidth;

        aiToTarget      = new AIGetToTargetActions(aiMemory, generalSolver, aiMovement, this.transform, target, this, minimumDistance, this);
        aiWeaponActions = new AIWeaponActions(aiWeaponController);


        projectileDetector = new ProjectileDetector(this.transform, 10, projectileLayer);
        aiBehaviorTree     = new AIBehaviorTree(aiToTarget, aiWeaponActions, this, projectileDetector);
        if (aiType == AIType.AGGRESSIVE)
        {
            aiBehaviorTree.CreateAndStartAggrassiveAI();
        }
        if (aiType == AIType.DEFENSIVE)
        {
            aiBehaviorTree.CreateAndStartDefensiveAI();
        }

        aiEnabled = true;
    }
Ejemplo n.º 5
0
    void Start()
    {
        objectAsReference.transform.position = transform.position;

        //set up the resting position gameobject
        if (transform.Find(nameOfRestingPosition) == null)
        {
            restingPosition = new GameObject(nameOfRestingPosition);
            restingPosition.transform.parent   = transform;
            restingPosition.transform.position = transform.position;

            restingPosition.transform.localRotation  = Quaternion.Euler(new Vector3(90f, 0f, 0f));
            restingPosition.transform.localPosition -= new Vector3(0f, 0.4f, 0f);
        }
        else
        {
            restingPosition = transform.Find(nameOfRestingPosition).gameObject;
        }

        //set up cache correctly
        brain            = transform.parent.parent.GetComponent <AIStateManager>();
        weaponController = transform.parent.parent.GetComponent <AIWeaponController>();
    }
Ejemplo n.º 6
0
 void Awake()
 {
     rb = GetComponent <Rigidbody>();
     weaponController = GetComponent <AIWeaponController>();
     _allegiance      = GetComponent <TargetableObject>().Allegiance;
 }
Ejemplo n.º 7
0
	void Awake()
	{
		
		//set the caches correctly
		weaponController = GetComponent<AIWeaponController>();
		movementManager = GetComponent<AIMovementSwitcher>();
		coverManager = GetComponent<SearchCover>();
		sightManager = sight.GetComponent<Sight>();
		earsManager = ears.GetComponent<Auditory>();
		patrolM = patrolManager.GetComponent<PatrolManager>();
		
		
		//at the start the current state is patroling
		currentState = CurrentState.patrol;
		//and the engagment is set to free
		engagementStatus = EngagementState.free;
		
		//some variables that we will later use for reference
		initFreezeTime = freezeTime;
		initShockTime = shockTime;
		initFOV = sightManager.fieldOfView;
		initChanceForFight = chanceForFight;
		initFear = fear;
		audioControl = GetComponent<ShooterAIAudioControl>();
		
		if(GetComponent<NavMeshAgent>() != null)
		{
			initHeight = GetComponent<NavMeshAgent>().height;
		}

		
		initYScale = GetComponentInChildren<HealthManager>().gameObject.transform.localScale.y;
		
		movement = movementManager;
		
		
		
		
		//anti-bottlenecking procedure
		enemyDistanceCheckFrameBarrier += Random.Range(-30f, 30f);
	
		//find the health manager automatically
		healthManager = GetComponentInChildren<HealthManager>().gameObject;
		
		//setup multiple weapons correctly
		otherWeapons.Add( weaponController.weaponHoldingObject );
		otherWeaponsMelee.Add( meleeAttackUsed ); 
	}
Ejemplo n.º 8
0
 public AIWeaponActions(AIWeaponController wc)
 {
     this.weaponController = wc;
 }
Ejemplo n.º 9
0
 void Awake ()
 {
     rb = GetComponent<Rigidbody>();
     weaponController = GetComponent<AIWeaponController>();
     allegiance = GetComponent<TargetableObject>().allegiance;
 }
Ejemplo n.º 10
0
 // Use this for initialization
 void Start()
 {
     myWeaponController = GetComponent <AIWeaponController>();
     myCurrentLocation  = GetComponent <Transform>();
     aiMoveInformation  = GetComponent <AIMoveScript>();
 }