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
1
Question by Uriel_96 · Oct 27, 2011 at 11:29 PM · aienemyshootcalculateprecision

enemy shoot AI precision

OK, this time I am trying to do an ai precision for the enemy to shoot the player. This is kind of difficult to make maybe because in this would depend of how good is the enemy shooting (using a var to calculate it) then also checking the reaction of the enemy to shoot and for last have possibility of shoot you in different parts of the body(depending reaction) and the possibility of miss the shot(depending on how good enemy is shooting). Note: I am not asking for a code, I am asking for what kind of methods would be better to use for this things and some ideas to make it. Thanks.

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
1
Best Answer

Answer by aldonaletto · Oct 28, 2011 at 12:41 AM

If you want to add some uncertainty to the enemy shot, I think you could add a random offset to the player position when calculating the shot direction - something like this:

var errorMargin: float = 1.0;
...
  // when calculating the shot direction:
  var shotDir = player.position + Random.insideUnitsphere * errorMargin - spawnPoint.position;
This would add a random offset proportional to errorMargin, so the shot could hit different parts or even no part at all.
Comment
Add comment · Show 5 · 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 Uriel_96 · Oct 28, 2011 at 09:12 PM 0
Share

the only problem with this is that you are considering this like a "circle" where the enemy randomly shoots, and this is more than just a circle because it depends more about the contour of the player, but thanks anyways, if you can give me an idea for this it would be wonderful, my possible idea is doing randomly shoot to a specific point of the mesh of the player and also deter$$anonymous$$e another random(like yours) to make the possibility to miss.

avatar image syclamoth · Oct 28, 2011 at 11:39 PM 1
Share

Well, you could put the 'circle' a set distance away from the enemy, and only use it for the direction. Then, the inaccuracy will be consistent over all distances.

avatar image oxium · Oct 29, 2011 at 01:19 AM 0
Share

then just deform the result of Random.insideUnitsphere to make it more oval

for ex multiplied it by (1,2,1)

avatar image aldonaletto · Oct 29, 2011 at 08:49 AM 1
Share

You could define a few regions separated by height, like head, chest and legs, randomly select one of them and add the spherical error - or the oval one, like @oxium suggested. This would be closer to a real shot - the guy aim to some specific part and shot, but the actual point hit (if any) will depend on the shooter skill and some random factors.

 var pos = target.position;
 switch (Random.Range(1, 3){
     case 1: pos.y += 0.6; break; // head
     case 2: pos.y += 0.2; break; // chest
     case 3: pos.y += -0.2; break; // legs
 }
 pos += Random.insideUnitSphere * error$$anonymous$$argin;
 var shotDir = pos - spawnPoint.position;
avatar image Uriel_96 · Oct 29, 2011 at 04:32 PM 0
Share

Thanks, really thanks to all of you

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

5 People are following this question.

avatar image avatar image avatar image avatar image avatar image

Related Questions

Make enemy more intelligent 0 Answers

How to reach multiple GameObjects' value , enemy AI 1 Answer

how to make an enemy Ai blow up when you shoot it? 2 Answers

How to make this enemy script shoot upwards? 1 Answer

free roaming enemy ai 1 Answer


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