• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
  • Help Room /
avatar image
0
Question by CampbellGray · Jun 16, 2020 at 03:48 PM · c#uiai

UI not changing when detected by AI

For my game i want the UI to change when the player is detected by the AI, but when i have multiple of the AI it only changes the UI when i am detected by one of them, and if i get detected by any other it doesn't change. Video for reference. When i remove all the AI apart from one the Ui changes find, but as soon as i add 2 it only works for one of them. All AI are the exact same apart from their patrol points.

  using System.Collections;
  using System.Collections.Generic;
  using UnityEngine;
  using UnityEngine.AI;
  using UnityEngine.UI;
  
  public class EnemyAI2 : MonoBehaviour
  {
  
      public State initialState;
      public float sprintMultiplyer;
      [Header("Wander Settings")]
      public Bounds boundsBox;
      [Header("Patrol Settings")]
      public Transform[] patrolPoints;
      public bool randomSequence = false;
      [Header("Chases Settings")]
      public Transform target;
      public float chaseDistance = 2.5f;
      public Transform playerTarget;
      public GameObject rockTarget;
      [Header("UI Settings")]
      public Image detectedRef;
      public static Image detected;
  
  
      public Light spotlight;
      public float viewDistance;
      public LayerMask viewMask;
  
  
      private float viewaAngle;
      private Color origionalSptColor;
  
  
      private NavMeshAgent agent;
      private Vector3 targetPos;
      private State currentState = State.none;
      private Transform player;
  
  
      private void Awake()
      {
          agent = GetComponent<NavMeshAgent>();
          if (detected == null)
          {
              detected = detectedRef;
          }
      }
  
  
      void Start()
      {
          detected.color = Color.black;
          player = GameObject.FindGameObjectWithTag("Player").transform;
          viewaAngle = spotlight.spotAngle;
          origionalSptColor = spotlight.color;
          SetState(initialState);
          target = playerTarget;
      }
  
      void SetState(State s)
      {
          if (currentState != s)
          {
              currentState = s;
              if (currentState == State.wander)
              {
                  FindNewWanderTarget();
                  spotlight.color = origionalSptColor;
                  detected.color = Color.black;
              }
              else if (currentState == State.patrol)
              {
                  GotToNextPatrolPoint(randomSequence);
                  spotlight.color = origionalSptColor;
                  detected.color = Color.black;
              }
              else if (currentState == State.chase)
              {
                  Debug.Log(name);
                  spotlight.color = Color.red;
                  detected.color = Color.white;
                  Chase();
              }
          }
  
      }
  
      void Update()
      {
  
          if (CanSeePlayer())
          {
              if (currentState != State.chase)
              {
                  SetState(State.chase);
              }
              else
              {
                  agent.SetDestination(target.position);
              }
          }
          else
          {
              if (currentState != State.chase)
              {
                  float distance = Vector3.Distance(targetPos, transform.position);
                  if (distance <= agent.stoppingDistance)
                  {
                      agent.isStopped = true;
                      if (currentState == State.wander)
                      {
  
                          FindNewWanderTarget();
                      }
                      else if (currentState == State.patrol)
                      {
                          GotToNextPatrolPoint(randomSequence);
                      }
                  }
              }
              else
              {
                  Walk();
                  SetState(initialState);
              }
  
          }
  
  
  
      }
  
      Vector3 GetRandomPoint()
      {
          float randomX = Random.Range(-boundsBox.extents.x + agent.radius, boundsBox.extents.x - agent.radius);
          float randomZ = Random.Range(-boundsBox.extents.z + agent.radius, boundsBox.extents.z - agent.radius);
          return new Vector3(randomX, transform.position.y, randomZ);
      }
  
      Vector3 GetPatrolPoint(bool random = false)
      {
          if (random == false)
          {
              if (targetPos == Vector3.zero)
              {
                  return patrolPoints[0].position;
              }
              else
              {
                  for (int i = 0; i < patrolPoints.Length; i++)
                  {
                      if (patrolPoints[i].position == targetPos)
                      {
                          if (i + 1 >= patrolPoints.Length)
                          {
                              return patrolPoints[0].position;
                          }
                          else
                          {
                              return patrolPoints[i + 1].position;
                          }
                      }
                  }
              }
          }
          else
          {
              return patrolPoints[Random.Range(0, patrolPoints.Length)].position;
          }
  
          return targetPos;
      }
  
      void GotToNextPatrolPoint(bool random = false)
      {
          if (random == false)
          {
              targetPos = GetPatrolPoint();
          }
          else
          {
              targetPos = GetPatrolPoint(true);
          }
          agent.SetDestination(targetPos);
          agent.isStopped = false;
      }
  
      void FindNewWanderTarget()
      {
          targetPos = GetRandomPoint();
          agent.SetDestination(targetPos);
          agent.isStopped = false;
      }
  
      private bool CanSeePlayer()
      {
          if (Vector3.Distance(transform.position, target.position) < viewDistance)
          {
              Vector3 dirToPlayer = (target.position - transform.position).normalized;
              float angleBetweenGuardAndPlayer = Vector3.Angle(transform.forward, dirToPlayer);
              if (angleBetweenGuardAndPlayer < viewaAngle / 2f)
              {
                  if (!Physics.Linecast(transform.position, target.position, viewMask))
                  {
                      detected.color = Color.white;
                      return true;
                  }
              }
          }
          detected.color = Color.black;
          return false;
      }
  
      private void OnDrawGizmos()
      {
          Gizmos.color = Color.blue;
          Gizmos.DrawWireCube(boundsBox.center, boundsBox.size);
          Gizmos.color = Color.yellow;
          Gizmos.DrawSphere(targetPos, 0.2f);
          Gizmos.color = Color.green;
          Gizmos.DrawWireSphere(transform.position, chaseDistance);
          Gizmos.color = Color.red;
          Gizmos.DrawRay(transform.position, transform.forward * viewDistance);
      }
  
      void Chase()
      {
          agent.speed *= sprintMultiplyer;
          agent.SetDestination(target.position);
          detected.color = Color.white;
      }
  
      void Walk()
      {
          agent.speed /= sprintMultiplyer;
      }
  
  }


Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

0 Replies

· Add your reply
  • Sort: 

Your answer

Hint: You can notify a user about this post by typing @username

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Welcome to Unity Answers

If you’re new to Unity Answers, please check our User Guide to help you navigate through our website and refer to our FAQ for more information.

Before posting, make sure to check out our Knowledge Base for commonly asked Unity questions.

Check our Moderator Guidelines if you’re a new moderator and want to work together in an effort to improve Unity Answers and support our users.

Follow this Question

Answers Answers and Comments

862 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

how to connect my Health to my UI 1 Answer

How do I make an enemy chase the player with a C script? 3 Answers

Issue with basic enemy AI script. 1 Answer

UI do something when pressed. 0 Answers

Count Down Timer C# Conversion Script Not Working Help 3 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges