• 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 andersonsacani93 · Apr 23 at 01:49 AM · ainavmeshagentpatrolmonster

Monsters are walking around without my permission, why?

I'm creating script to control an artificial intelligence, but the monsters are walking automatically. When I set the monster to patrol, then it patrols normally, but if I set it to not patrol, the monster is walking around randomly. I want the monster to stay still when the "patrollingCreature" option is set to "false".

 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityEngine.Animations;
 using UnityEngine.AI;
 
 public class AIController : MonoBehaviour
 {
     [SerializeField] private GameObject player;
     [SerializeField] private Animator anim;
     [SerializeField] private Transform[] waypoints;
 
     private NavMeshAgent agent;
 
     private float distance;
     private bool isPlayerClose;
     private int destPoint = 0;
 
     public bool patrollingCreature = false;
     public bool thisCreatureAttack = false;
     public bool giveUpTheFight = true;
     public float maxHitPoints = 3f;
     public float currentHitPoints = 3f;
     public float fleeingHitPoints = 1f;
     public float maxAllowedDistance = 10f;
     public float attackRange = 5f;
     public float attackDamage = 10f;
     public float walkSpeed = 10.34f; //5.335f
     public float runSpeed = 31.04f;
 
     void Awake()
     {
         anim = GetComponent<Animator>();
         agent = GetComponent<NavMeshAgent>();
     }
 
     void Start()
     {
         // Disabling auto-braking allows for continuous movement
         // between points (ie, the agent doesn't slow down as it
         // approaches a destination point).
         agent.autoBraking = false;
     }
 
     void Update()
     {
         distance = Vector3.Distance(transform.position, player.transform.position);
 
         if (distance <= maxAllowedDistance)
         {
             isPlayerClose = true;
         }
         else
         {
             isPlayerClose = false;
         }
 
         if (isPlayerClose == true)
         {
             if (thisCreatureAttack == true)
             {
                 ToChase();
             }
             else
             {
                 if (giveUpTheFight == true)
                 {
                     if (currentHitPoints <= fleeingHitPoints)
                     {
                         ToRun();
                     }
                 }
             }
         }
         else
         {
             if (patrollingCreature == true)
             {
                 // Choose the next destination point when the agent gets
                 // close to the current one.
                 if (!agent.pathPending && agent.remainingDistance < 0.5f)
                 {
                     ToPatrol();
                 }
             }
             else
             {
                 ToRest();
             }
         }
     }
 
     private void ToRest()
     {
         agent.destination = transform.position;
         agent.velocity = Vector3.zero;
     }
 
     private void ToPatrol()
     {
         agent.speed = walkSpeed;
 
         // Returns if no points have been set up
         if (waypoints.Length == 0)
             return;
 
         // Set the agent to go to the currently selected destination.
         agent.destination = waypoints[destPoint].position;
 
         // Choose the next point in the array as the destination,
         // cycling to the start if necessary.
         destPoint = (destPoint + 1) % waypoints.Length;
     }
 
     private void ToLook()
     {
         transform.LookAt(player.transform.position);
     }
 
     private void ToChase()
     {
         ToLook();
 
         if (distance <= attackRange)
         {
             agent.velocity = Vector3.zero;
             ToAttack();
         }
         else
         {
             agent.speed = runSpeed;
             agent.destination = player.transform.position;
         }
     }
 
     private void ToAttack()
     {
         ///Attack the player every second, dealing damage determined on variables
     }
 
     private void ToRun()
     {
         ///Run in the opposite direction of the player. Stay at a distance of 20f
     }
 }
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.

Follow this Question

Answers Answers and Comments

264 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

Related Questions

NavMeshAgent patrol doesn't work 0 Answers

How do I get my guard(s) to stop at NavPoint(s) and go into IdleState in C# 0 Answers

Pros and cons to using Navmesh Agents over custom-made AI? 1 Answer

NavMeshSurface or NavMeshAgent agentTypeId can't be changed on runtime 0 Answers

Problem with NavMesh 0 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