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 Inan-Evin · Mar 11, 2012 at 10:06 PM · aienemymultipleshootdetect

How to reach multiple GameObjects' value , enemy AI

Hello everyone, I need help for my AI script. I have my enemy AI script almost ready. My enemies have "playerDetected" value. If this value is true they start shooting. So I want this value to be true when player shoots. I did :

 function Shoot(){
 var target = GameObject.FindWithTag("Enemy");
 var scr = target.GetComponent(EnemyAI);
 scr.playerDetected=true;
 }

this script works perfect only if there is one enemy in the scene. When I put 2 or more enemies to the scene, only one of them starts shooting. Basically what I want to do is, when I shoot all the objects tagged "Enemy" will change their playerDetected value to true in their scripts. Any ideas ? 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 · Mar 12, 2012 at 12:40 AM

FindWithTag only returns the first enemy found in the game objects tree. If you want to warn all enemies, use FindGameObjectsWithTag: this function returns an array with all enemies, and you can set them all

function Shoot(){
var targets: GameObject[] = GameObject.FindGameObjectsWithTag("Enemy");
  for (var target in targets){ // warn all enemies in targets[]
    var scr = target.GetComponent(EnemyAI);
    if (scr) scr.playerDetected=true; // if target has the script, set playerDetect
  }
}
Comment
Add comment · Show 3 · 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 Inan-Evin · Mar 13, 2012 at 07:40 PM 0
Share

well that works perfect for javascript, but I also try to do it on C# and I couldn't fit it in C#, $$anonymous$$d if you can help me out :) ?

avatar image aldonaletto · Mar 13, 2012 at 08:34 PM 1
Share

In C#, the function would become something like this (I hope!):

void Shoot(){
  GameObject[] targets = GameObject.FindGameObjectsWithTag("Enemy");
  foreach (GameObject target in targets){ // warn all enemies in targets[]
    EnemyAI scr = target.GetComponent<EnemyAI>();
    if (scr) scr.playerDetected=true; // if target has the script, set playerDetect
  }
}
I usually write in JS (it's much easier), thus the code above may still contain some C# error - let me know if the cranky C# compiler complains about something.
avatar image Inan-Evin · Mar 13, 2012 at 08:56 PM 0
Share

well actually foreach was the thing which i didn't know, so It works :) . You helped me a lot, thanks :).

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

6 People are following this question.

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

Related Questions

Make enemy more intelligent 0 Answers

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

enemy shoot AI precision 1 Answer

How to make this enemy script shoot upwards? 1 Answer

How to stop enemies from shooting each other 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