public override void Execute() { directionAttack = (ranged.enemy_navmesh.transform.position - ranged.player.transform.position).normalized; Quaternion lookOnLook = Quaternion.LookRotation(-directionAttack); transform.rotation = Quaternion.Slerp(transform.rotation, lookOnLook, 0.5f); timer += Time.deltaTime; if (search_position) { randomPos = ranged.player.transform.position + Random.insideUnitSphere * 10; if (Vector3.Distance(ranged.player.transform.position, randomPos) > 5) { search_position = false; } } if (timer < ranged.timeBetweenShots) { if (!destination_done) { ranged.enemy_navmesh.SetDestination(randomPos); destination_done = true; } } else { Shoot(); timer = 0; destination_done = false; search_position = true; } if (ranged.distanceToPlayer <= ranged.distanceToFlee) { ranged.ChangeState(ranged.flee); } else if (ranged.distanceToPlayer <= ranged.distanceToChase && ranged.distanceToPlayer > ranged.distanceToAttack) { ranged.ChangeState(ranged.chase); } else if (ranged.distanceToPlayer > ranged.distanceToChase) { ranged.ChangeState(ranged.patrol); } }
public override void Execute() { Vector3 dirToPlayer = transform.position - ranged.player.transform.position; Vector3 newpos = transform.position + dirToPlayer; ranged.enemy_navmesh.SetDestination(newpos); if (ranged.distanceToPlayer <= ranged.distanceToChase && ranged.distanceToPlayer > ranged.distanceToAttack) { ranged.ChangeState(ranged.chase); } else if (ranged.distanceToPlayer <= ranged.distanceToAttack && ranged.distanceToPlayer > ranged.distanceToFlee) { ranged.ChangeState(ranged.attack); } }
public override void Execute() { if (ranged.distanceToPlayer > ranged.distanceToAttack) { ranged.enemy_navmesh.SetDestination(ranged.player.transform.position); } timer += Time.deltaTime; if (ranged.distanceToPlayer <= ranged.distanceToFlee) { ranged.ChangeState(ranged.flee); } else if (ranged.distanceToPlayer <= ranged.distanceToAttack && ranged.distanceToPlayer > ranged.distanceToFlee) { ranged.ChangeState(ranged.attack); } else if (ranged.distanceToPlayer > ranged.distanceToChase) { ranged.ChangeState(ranged.patrol); } }
public override void Execute() { if (ranged.GetDistance(patrolPoint) < distanceToPoint) { AssignRandom(); } if (ranged.GetDistance(ranged.player.transform.position) <= ranged.distanceToChase) { ranged.ChangeState(ranged.chase); } }
public override void Execute() { timer += Time.deltaTime; if (timer >= timeStaggered) { if (ranged.currentHealth > 0) { if (ranged.distanceToPlayer <= ranged.distanceToFlee) { ranged.ChangeState(ranged.flee); } else if (ranged.distanceToPlayer <= ranged.distanceToChase) { ranged.ChangeState(ranged.chase); } else if (ranged.distanceToPlayer > ranged.distanceToChase) { ranged.ChangeState(ranged.patrol); } } } }