Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 13 Next capture
2021 2022 2023
1 capture
13 Jun 22 - 13 Jun 22
sparklines
Close Help
  • 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 /
avatar image
0
Question by infinitypbr · Jun 23, 2013 at 12:16 AM · mecanimnavmesh

NavMeshAgent: Keep Enemy x Distance from Player?

I have an enemy archer controlled via NavMesh & Mecanim. The enemy is set to "See" the player from 24 units away, and then approach, but at 20 units, via NavMesh stopping distance, stop. This works. The enemy then shoots an arrow, via scripting and Mecanim.

However, if the player gets too close, say, 15 units, I want the enemy to move back, attempting to keep at least 15 units between him and the player object.

I also want to make sure the enemy doesn't move out of visual range of the player, since he needs to see the player in order to fire the arrow -- so I wouldn't want the enemy to move behind a wall or something.

How would I go about doing this?

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

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by TonyLi · Jun 23, 2013 at 01:52 AM

In Update(), check the distance to the player. If the player is too close, raycast back (in the opposite direction from the player) to the archer's desired distance. If it's clear, just set your NavMeshAgent's destination to that point. If the raycast hits something, keep trying 10 degrees further out on either side until you find a clear spot.

You can get a lot fancier than this, incorporating map analysis and more advanced AI, but the approach above should give you pretty good behavior already.

Comment
Add comment · Show 2 · Share
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
avatar image infinitypbr · Jun 23, 2013 at 02:15 AM 0
Share

Ok -- I think I may actually need to always set the destination point to at least x units from player -- right now, when I reset the destination, since the Nav$$anonymous$$esh turns off at x units, the enemy doesn't move back.

I'll try that out.

avatar image IgorAherne · Sep 21, 2017 at 02:26 AM 0
Share

just to clarify @TonyLi we need to use Nav$$anonymous$$esh.Raycast() not Physics.Raycast()

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

17 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

Related Questions

Enemy follow player on navigation mesh 0 Answers

Getting turning direction for character without using Input 1 Answer

Rotate animation at waypoint 1 Answer

Teddy Bear Mecanim NavMesh (my animations don't work) 0 Answers

NavMeshAgent animation - sliding 2 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