AIController.Start C# (CSharp) Method

Start() public method

public Start ( ) : void
return void
	public virtual void Start ()
	{
		if (this.SkinType.Equals (NPCSkinType.MowerMan)) 
		{
			audio.clip = mowing;
			audio.Play();
		}
		enteredMap = false;
		// Alert Texture
		alertTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIAlert"));
		alertTexture.transform.SetParent (transform, false);
		alertTexture.renderer.enabled = false;
		TextureScript alertTs = alertTexture.GetComponent<TextureScript> ();
		alertTs.target = gameObject;

		// Panic Texture
		panicTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIPanic"));
		panicTexture.transform.SetParent (transform, true);
		panicTexture.renderer.enabled = false;
		TextureScript panicTs = panicTexture.GetComponent<TextureScript> ();
		panicTs.target = gameObject;

		// Scare Texture
		scaredTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AIScared"));
		scaredTexture.transform.SetParent (transform, true);
		scaredTexture.renderer.enabled = false;
		TextureScript scaredTs = scaredTexture.GetComponent<TextureScript> ();
		scaredTs.target = gameObject;

		// Scare Texture
		lureTexture = (GameObject)Instantiate (Resources.Load ("prefabs/AI/SceneInitPrefabs/AILure"));
		lureTexture.transform.SetParent (transform, true);
		lureTexture.renderer.enabled = false;
		TextureScript lureTs = lureTexture.GetComponent<TextureScript> ();
		lureTs.target = gameObject;

		player = GameObject.FindGameObjectWithTag ("Player");
		// Set initial alert/panick states
		//timePanicked = panicCooldownSeconds;
		alerted = false;
		panicked = false;
		alertLevel = 0f;
		playerInRange = false;
		visionAngleOffset = .5f * visionAngleSize;

		// TODO: Make this vector match NPC's view
		//forwardLookingDirection = new Vector3 (-1, 0);
		npcDir = NPCDirection.L;
		xScale = transform.localScale.x;

		// Register for all messages that entre necessary
		MessageCenter.Instance.RegisterListener (MessageType.PlayerGrabbedNPCs, grabbedListener);
		MessageCenter.Instance.RegisterListener (MessageType.NPCEaten, eatenListener);
		MessageCenter.Instance.RegisterListener (MessageType.PlayerReleasedNPCs, releasedListener);
		MessageCenter.Instance.RegisterListener (MessageType.TrapEntered, trapEnterListener);
		MessageCenter.Instance.RegisterListener (MessageType.TrapReleased, trapReleaseListener);
		MessageCenter.Instance.RegisterListener (MessageType.LureRadiusEntered, lureEnterListener);
		MessageCenter.Instance.RegisterListener (MessageType.LureReleased, lureReleaseListener);
		MessageCenter.Instance.RegisterListener (MessageType.AbilityPlaced, abilityPlacedListener);
		MessageCenter.Instance.RegisterListener (MessageType.NewMarkedBounty, markedBountyListener);

		// Ignore collision with other AI
		int npcLayer = LayerMask.NameToLayer (npcTag);
		Physics2D.IgnoreLayerCollision (npcLayer, npcLayer);
		Physics2D.IgnoreLayerCollision (npcLayer, 9);


		// Broadcast start of lifecycle
		MessageCenter.Instance.Broadcast (new NPCCreatedMessage (gameObject));
	}

Usage Example

Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        //Attack with melee weapon if within melee range and shield is not active
        if (aIController.GetDistanceToPlayer() <= MeleeRange && !Shield.Active)
        {
            MeleeWeapon.RandomAttack();
        }
        //else if the within melee rance and staff range and is past the second stage use staff
        else if (aIController.GetDistanceToPlayer() >= MeleeRange && aIController.GetDistanceToPlayer() <= StaffRange && currentStage >= 1)
        {
            //randomly use staff if shield is not active
            if (Random.value > .8f && !Shield.Active)
            {
                StaffWeapon.Attack(playerTransform); //attack with staff and pass player Transform so the projectiles follow the player
            }
        }

        //if stage 3 is active then use the shield
        if (currentStage >= 2)
        {
            Shield.Use();
        }
        if (Shield.Active || currentlyCharging) // if shield is active stop movement
        {
            aIController.Stop();
        }
        else
        {
            aIController.Start();
        }

        //if on stage 4 charge
        if (currentStage >= 3 && !chargeCooldown)
        {
            StartCoroutine(Charge(transform, transform.position, playerTransform.position, 50f));
        }

        // check if health is less than 0 and current stage is less than the amount of stages
        if (characterData.CurrentHealth <= 0.0f && currentStage < HealthStages.Length)
        {
            //enter next stage
            currentStage++;

            //alert the plater of next stage
            AlertManager.GetInstance().AddAlert("Stage " + (currentStage + 1) + " about to start!");
            //set the bosses health to next stage and heal him
            characterData.SetMaxHealth(HealthStages[currentStage]);
            characterData.Heal(HealthStages[currentStage]);
        }
        else if (characterData.CurrentHealth <= 0.0f && currentStage >= HealthStages.Length)
        {
            //if the boss dies and it and is on the last stage kill the boss
            characterData.Kill();
        }
    }
All Usage Examples Of AIController::Start