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 AlexJBoyd · Apr 02, 2013 at 08:30 AM · arrayoverlapsphere

Trying to use "OverlapSphere" to detect closest enemy

So I am building a firing system for a game I am working on with a small team. We have different types of moves that the player can use (direct shot, area of effect, ect.) To help simplify the process we are using an "aim assist" that fires an move at the closest enemy.

To accomplish this task I am using "OverlapSphere" to build an array of close gameObject, then calculating to find the closest one at any given point. the code I have provided work (meaning no errors/warnings) however it keeps finding itself (the player) as the closest object and setting itself to the target. Am I missing something here? Thank you.

 #pragma strict
 
 var radius: float;
 var target: Transform;
 
 function Update () 
 {
     MagicCalc();
     
     
     if(Input.GetKeyUp("q"))
     {
         CannonShot();
     }
 }
 
 
 function MagicCalc()
 {
     var curNearest = Mathf.Infinity;
     var enemies = Physics.OverlapSphere(transform.position, radius);
     var enemyNearest: Transform = null;
     
 
     for(var temp: Collider in enemies)
     {
         Debug.Log(temp);
         var tempPos = temp.transform.position;
         var tempDistance = (tempPos - transform.position).sqrMagnitude;
         
         if(tempDistance < curNearest)
         {
             enemyNearest = temp.gameObject.transform;
             curNearest = tempDistance;
         }
     }
     return enemyNearest;
 }
 
 function CannonShot()
 {
     
 }
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 whydoidoit · Apr 02, 2013 at 09:59 AM

Either apply a layer mask to your OverlapShere to ignore the player or check whether temp is the player in the loop and continue if it is:

    if(temp.transform == transform) continue; //Perhaps
Comment
Add comment · 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

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

11 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

Related Questions

Confused using Arrays 1 Answer

How to get the nearest collider, or just a single collider from Physics.OverlapSphere? 1 Answer

Destroy objects within ordered Array by line of sight 1 Answer

How to get an array of transforms and move GameObject for certain duration to that transforms list 0 Answers

multiple overlapspheres on a single array 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