public override StateMachineBehavior Update(AICharacterController owner, float deltaTime) { var aiMovement = owner.GetComponent <IAstarAI>(); if (owner.Vision.SpottedObject) { lastKnownPosition = owner.Vision.SpottedObject.transform.position.XY(); var combat = owner.GetComponent <CombatComponent>(); if (Vector3.Distance(lastKnownPosition, owner.transform.position) < 0.8f * (combat.MeleeRange + owner.Vision.SpottedObject.GetComponent <CircleCollider2D>().radius)) { aiMovement.destination = owner.transform.position; Vector2 direction = lastKnownPosition - owner.transform.position.XY(); float targetAngle = Mathf.Atan2(direction.y, direction.x) * Mathf.Rad2Deg - 90; var targetRot = Quaternion.Euler(0, 0, targetAngle); owner.transform.rotation = Quaternion.RotateTowards(owner.transform.rotation, targetRot, 360.0f * deltaTime); combat.PerformMeleeAttack(); } else { aiMovement.maxSpeed = owner.MaxMovementSpeed; aiMovement.destination = lastKnownPosition; } } else { if (Vector3.Distance(lastKnownPosition, owner.transform.position) < 1.0f) { return(new Alert(lastKnownPosition)); } } return(this); }
protected override void init() { base.init(); IAIControllerFactory controllerFactory = AIControllerFactory.getEntity(); aiCharacterController = controllerFactory.getAICharacterController(this, new BrainFactory()); }
public void CheckForTarget() { if (pause) { return; } if (controller == null) { controller = GetComponent <AICharacterController>(); } if (currentTargets.Count > 0) { foreach (GameObject target in currentTargets) { if (target != null) { controller.SetTarget(target.transform); } } ai.ResetTriggers(); } else { controller.SetTarget(gameObject.transform); } }
void Start() { controller = GetComponent <AICharacterController>(); gameObject.GetComponent <AITriggerManager>().AddTrigger("Movement Trigger", 0.3f, TargetReachedTriggerFunc, true); if (currentTargets == null) { currentTargets = new List <GameObject>(); } }
// Start is called before the first frame update void Start() { respawnPoint = gameObject.transform.position; characterContRef = PlayerCharacterController.request(); animRef = gameObject.GetComponent <AnimationController>(); if (gameObject.CompareTag("AI")) { aiControllerRef = gameObject.GetComponent <AICharacterController>(); } else { deathCam.Follow = null; } }
public override void Initialize(AICharacterController owner) { base.Initialize(owner); Assert.IsTrue(owner.PatrolPoints.Length > 0); float minDist = Vector3.Distance(owner.PatrolPoints[0].Position, owner.transform.position); for (int pointIndex = 1; pointIndex < owner.PatrolPoints.Length; ++pointIndex) { float dist = Vector3.Distance(owner.PatrolPoints[pointIndex].Position, owner.transform.position); if (dist < minDist) { minDist = dist; currentPatrolPointIndex = pointIndex; } } owner.Hearing.OnSoundReceived += OnSoundReceived; }
private void Update() { if (GameStateManager.Instance.CurrentStage == GameStateManager.GameStage.Daytime) { if (_spawnedMonster == null || _spawnedMonster.AIAnimator.IsDead) { _respawnTimer -= Time.deltaTime; if (_respawnTimer <= 0) { _respawnTimer = _respawnInterval.RandomValue; Vector3 spawnPos = transform.position; PathFindManager.Instance.TryGetTraversablePoint(spawnPos, out spawnPos, 10); _spawnedMonster = Instantiate(_monsterPrefab, spawnPos, transform.rotation); } } } }
void RespawnCharacter(GameObject go, GameObject respawnPoint, int damageResetPos, int playerNumber) { GameObject p = Instantiate(go, respawnPoint.transform.position, Quaternion.Euler(0, 0, 0)); CharacterController characterController = p.GetComponent <CharacterController>(); if (characterController != null) { characterController.enabled = true; } AICharacterController aiCharacterController = p.GetComponent <AICharacterController>(); if (playerNumber == 1) { p.tag = "Player"; if (aiCharacterController != null) { Destroy(aiCharacterController); } } else { p.tag = "AI"; aiCharacterController.enabled = true; } Animator animator = p.GetComponent <Animator>(); animator.enabled = true; p.transform.position = new Vector3(transform.position.x, transform.position.y, -1); battleController.ResetDamageAtPosition(damageResetPos); DamageResolver dmgResolver = p.GetComponent <DamageResolver>(); if (dmgResolver != null) { dmgResolver.DoDamage += battleController.HandleApplyDamage; } }
public override StateMachineBehavior Update(AICharacterController owner, float deltaTime) { PatrolPoint currentPatrolPoint = owner.PatrolPoints[currentPatrolPointIndex]; Vector3 dest = currentPatrolPoint.Position; if (Vector3.Distance(dest, owner.transform.position) < 1.0f) { waitTimer += deltaTime; if (waitTimer > currentPatrolPoint.waitTime) { ++currentPatrolPointIndex; if (currentPatrolPointIndex == owner.PatrolPoints.Length) { currentPatrolPointIndex = 0; } waitTimer = 0; } } else { var aiMovement = owner.GetComponent <IAstarAI>(); aiMovement.maxSpeed = 0.25f * owner.MaxMovementSpeed; aiMovement.destination = currentPatrolPoint.Position; } if (owner.Vision.SpottedObject) { return(new Chase()); } if (soundRegistered) { return(new Alert(registeredSoundPosition)); } return(this); }
// Start is called before the first frame update void Start() { rb = gameObject.GetComponent <Rigidbody>(); collider = gameObject.GetComponent <Collider>(); characterContRef = PlayerCharacterController.request(); animRef = gameObject.GetComponent <Animator>(); Transform[] trans = gameObject.GetComponentsInChildren <Transform>(); foreach (Transform t in trans) { if (t.CompareTag("PelvisBone")) { pelvis = t.gameObject; } } if (gameObject.CompareTag("AI")) { navMeshRef = gameObject.GetComponent <NavMeshAgent>(); aiControllerRef = gameObject.GetComponent <AICharacterController>(); } deActivateRagdoll(); }
public override StateMachineBehavior Update(AICharacterController owner, float deltaTime) { if (owner.Vision.SpottedObject) { return(new Chase()); } if (Vector2.Distance(soundPosition, owner.transform.position.XY()) < 1.0f) { waitTimer += deltaTime; if (waitTimer > 3.0f) { return(new Patrol()); } } else { var aiMovement = owner.GetComponent <IAstarAI>(); aiMovement.maxSpeed = 0.5f * owner.MaxMovementSpeed; aiMovement.destination = soundPosition; } return(this); }
public virtual void Finish(AICharacterController owner) { }
public override void Finish(AICharacterController owner) { base.Finish(owner); owner.Hearing.OnSoundReceived -= OnSoundReceived; }
public IEnumerator ResetCharacter(CharacterControllerALL playerController, BoxCollider boxCollider, SpriteRenderer renderer, AICharacterController aiController = null) { yield return(new WaitForSeconds(1f)); if (aiController != null) { aiController.enabled = true; } if (playerController != null) { playerController.canIMove = true; } if (boxCollider != null) { boxCollider.enabled = true; } if (rigidbody2D != null) { rigidbody2D.isKinematic = false; } if (renderer != null) { renderer.color = Color.white; } }
public void ResetAfterFrozen(CharacterControllerALL playerController, BoxCollider boxCollider, SpriteRenderer renderer, AICharacterController aiController = null) { StartCoroutine(playerController.ResetCharacter(playerController, boxCollider, renderer, aiController)); }
public virtual void Initialize(AICharacterController owner) { }
public abstract StateMachineBehavior Update(AICharacterController owner, float deltaTime);
public override void Initialize(AICharacterController owner) { base.Initialize(owner); owner.Hearing.OnSoundReceived += OnSoundReceived; }