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 Brum · Mar 25, 2013 at 08:24 PM · c#gameobjectcollidertriggerother

Return gameobject from a TriggerEvent.

so basicly i have an trigger collider on my player, and when i walk close to an enemy it checks if there is someting there and if its an enemy, but i'm having trouble returing the enemy's GameObject to use it in another script.

 public class TriggerTest : MonoBehaviour {
 public GameObject target;
     void Start(){
         }
     
     void OnTriggerStay (Collider other)
     {    if (other.tag == "Enemy"){
         //Return the GameObject of the "other" here
         //So it can be used in other code.
         }    
     }
 }
 
 
Comment
Add comment · Show 2
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 whydoidoit · Mar 25, 2013 at 08:25 PM 0
Share

We need to see the code...

avatar image Brum · Mar 25, 2013 at 08:26 PM 0
Share

Oh sorry, i inserted the wrong thing!

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by Owen-Reynolds · Mar 25, 2013 at 10:06 PM

You can't strictly return anything, since you're being called by the system. If you want a trigger to "go to" someone else, a few ways:

o Just put OnTrigger on the enemies -- a collider moving into a trigger will also call the collider's OnTrigger.

o Call the function from that other script: other.GetComponent().youRanATrigger();

o Set some vars that the other script will see: other.GetComponent().gotHit=true;

Comment
Add comment · Show 4 · 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 Brum · Mar 25, 2013 at 11:06 PM 0
Share

Oké so i choose to do the first way, but now i want to target the enemy who got the bool imInRange(the bool for being triggerd) enabled so i tried this code wich doesn't work.

 public class Targetting : $$anonymous$$onoBehaviour {
 public List<GameObject> targets;
 public GameObject selectedTarget;
 private TriggerTest Triggert;
     // Use this for initialization
     void Start () {
         AddAllEnemies();
     }
     
     public void AddAllEnemies() {
         GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
         
         foreach(GameObject enemy in go)
             AddTarget(enemy.gameObject);
     }
     public void AddTarget(GameObject enemy) {
         targets.Add(enemy);
     }
     
     public void ChooseTarget(){
         
             foreach(GameObject enemy in targets){
             Triggert = new TriggerTest();        
             if (Triggert.imInRange == true){
                 selectedTarget = enemy;
             }
         }
     }
     
     // Update is called once per frame
     void Update () {
         if (Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.Q))
         ChooseTarget();
     }
 }
avatar image Owen-Reynolds · Mar 26, 2013 at 12:06 AM 0
Share

Well, Triggert = new TriggerTest(); if (Triggert.imInRange == true) isn't going to do anything useful, checking if something values of something you just made.

$$anonymous$$ight be better to focus on something specific like "when I stand near an enemy, it takes damage" or something like that. Lots of already done examples here of those sorts of things.

avatar image Brum · Mar 26, 2013 at 06:44 AM 0
Share

I'm realy having a problem with it, for selecting the nearest object i have this code: ///

/// Target$$anonymous$$ob.cs /// Oct 20, 2010 /// Peter Laliberte /// /// This script can be attached to any permanent gameobject, and is responsible for allowing the player to target different mobs that are with in range /// using UnityEngine; using System.Collections; using System.Collections.Generic;

 public class Targetting : $$anonymous$$onoBehaviour {
     public List<Transform> targets;
     public Transform selectedTarget;
     
     private Transform myTransform;
         
     // Use this for initialization
     void Start () {
         targets = new List<Transform>();
         selectedTarget = null;
         myTransform = transform;
         
         AddAllEnemies();
     }
     
     public void AddAllEnemies() {
         GameObject[] go = GameObject.FindGameObjectsWithTag("Enemy");
         
         foreach(GameObject enemy in go)
             AddTarget(enemy.transform);
     }
     
     public void AddTarget(Transform enemy) {
         targets.Add(enemy);
     }
     
     
     private void SortTargetsByDistance() {
         targets.Sort(delegate(Transform t1, Transform t2) {
                 return Vector3.Distance(t1.position, myTransform.position).CompareTo(Vector3.Distance(t2.position, myTransform.position));
                 });
     }
     
     
     //if we do not have an enemy targeted ywt, then find the clostest one and target him
     //if we do have an enemy targeted, then get the next target
     //if we have the last target in the list, then get then first target in the list
     private void TargetEnemy() {
         if(selectedTarget == null) {
             SortTargetsByDistance();
             selectedTarget = targets[0];
         }
         else {
             int index = targets.IndexOf(selectedTarget);
             
             if(index < targets.Count - 1) {
                 index++;
             }
             else {
                 index = 0;
             }
             DeselectTarget();
             selectedTarget = targets[index];
         }
         SelectTarget();
     }
     
     private void SelectTarget() {
         selectedTarget.renderer.material.color = Color.red;
         
         $$anonymous$$eleeAttack ma = ($$anonymous$$eleeAttack)GetComponent("$$anonymous$$eleeAttack");
         
         ma.target = selectedTarget.gameObject;
     }
     
     private void DeselectTarget() {
         selectedTarget.renderer.material.color = Color.white;
         selectedTarget = null;
     }
     
     // Update is called once per frame
     void Update () {
         if(Input.Get$$anonymous$$eyDown($$anonymous$$eyCode.F)) {
             TargetEnemy();
         }
     }
 }
 

But now i want it to only select the nearest and cheack that every time i press the button

avatar image Owen-Reynolds · Mar 26, 2013 at 08:33 PM 0
Share

That's a completely different question. But look at the TargetEnemy part. It shows you how to get the closest.

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

12 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

Related Questions

Get object that triggered an object 1 Answer

Trigger not getting GameObject 2 Answers

I need help with triggers 1 Answer

Work around for onTriggerStay? 1 Answer

C# Check If Gameobject is within Collider 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