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 Dudledok · Oct 21, 2014 at 06:07 PM · c#colliderontriggerenter

OnTriggerEnter - if other is of type, invoke method

I want to see if the object we are colliding with is of a certain type and then invoke a member function specific to that type's class.

I can easily check to see if the other object is the type I want with a simple name or tag comparison, but then the method I want to call obviously can't be called because Collider doesn't contain a definition for it.

Example code of issue, where Disable is a method in the Block class:

 void OnTriggerEnter (Collider other)
 {
     if(other.tag == "Block")
     {
         other.Disable();
     }
 }

What's the best way get around this?

Comment
Add comment · Show 1
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 tanoshimi · Oct 21, 2014 at 06:19 PM 2
Share

other.GetComponent().Disable();

2 Replies

· Add your reply
  • Sort: 
avatar image
2
Best Answer

Answer by smoggach · Oct 21, 2014 at 06:25 PM

All monobehaviours have properties linking to their GameObject. so if you wanted to disable other, you could do

 other.gameObject.SetActive(false);

You can also just do

 other.GetComponent<WhateverScriptYouAreLookingFor>().SomeFunctionYouWantToRun();
Comment
Add comment · Show 1 · 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 Dudledok · Oct 21, 2014 at 06:30 PM 0
Share

I should have used a better example than Disable as I'm not trying to completely disable the object, but your second option is obviously fine, thanks.

avatar image
0

Answer by Kiwasi · Oct 21, 2014 at 06:32 PM

Better to do a null check first.

 MyScript myScript = other.GetComponent<MyScript>();
 if(MyScript){
     // Do something awesome
 }

Note: You are also abusing the word type. The type of every GameObject is GameObject. What you are asking to do is check if the GameObject has a specific component attached.

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

29 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 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

How to make gameObject make only one collision 1 Answer

How to have a score counter increment in OnTriggerEnter 1 Answer

onEnterCollider returns Collider 1 Answer

Distribute terrain in zones 3 Answers

How Does OnTriggerEnter() Work? 0 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