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 Griffo · May 13, 2015 at 04:18 PM · colliderboxcollidertypecapsulecolliderspherecollider

Set a variable to a collider type.

I'm trying to set a variable to a collider type.

When a particle hits an enemy I want it to see what type of collider it has just hit, box, capsule or sphere .

I thought something like this would work

 private var col : Collider;
 private var colCenter : Vector3;
 
 col = _enemy[i].Transforms.gameObject.GetComponent.<Collider>();
 var colType = col.GetType();
 colCenter = _enemy[i].Transforms.position + colType.center;

But I get the error .. 'center' is not a member of 'System.Type'

Also tried

 private var colCenter : Vector3;
 
 var col = _enemy[i].Transforms.gameObject.GetComponent.<Collider>().GetType();
 colCenter = _enemy[i].Transforms.position + col.center;

But still get the error .. 'centre' is not a member of 'System.Type'

Any help please, 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
0

Answer by FortisVenaliter · May 13, 2015 at 04:23 PM

How about something like this:

 if(center is BoxCollider)
 {
     BoxCollider box = (BoxCollider)center;
     // do code with box
 }
 else if(center is SphereCollider)
 {
     ...
 }
 else ...
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 Griffo · May 13, 2015 at 04:25 PM 0
Share

Thanks for the input, but I really didn't want to go that route .. trying to keep it optimised :)

avatar image FortisVenaliter · May 13, 2015 at 04:57 PM 0
Share

There shouldn't be any significant performance decrease for that code, unless you're calling it over 100$$anonymous$$ times per frame or something.

You can't write a single bit of code to handle them individually unless you can do so with the abstract base class. Since you need to deter$$anonymous$$e the type though, I'm assu$$anonymous$$g that's not possible in your situation?

The GetType() method returns a System.Type object. It basically gives you metadata about the type of object from Reflection, but has no actual link to the object in question.

One other thing I have to recommend is to not use "var" in C#. I personally treat it like it doesn't exist, because strong typing makes your code easier to read and debug (in almost all cases anyway).

avatar image Griffo · May 13, 2015 at 05:28 PM 0
Share

FortisVenaliter .. thanks for that, looks like it's not possible then :(

avatar image FortisVenaliter · May 13, 2015 at 05:34 PM 0
Share

Seriously though, don't pre-guess on performance. Give it a shot and profile it, then edit if it's too slow.

avatar image Griffo · May 13, 2015 at 05:38 PM 0
Share

I did put a smiley face when I said "trying to keep it optimised" ;)

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

19 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

Related Questions

My SphereCast dont collide with Box collider 1 Answer

Colliders not inheriting the Transforms of changed animation states(Run to Crawl) -Unity3D, 0 Answers

Raycast, Linecast, sphere collider or capsule collider? 0 Answers

Keep Sphere Collider within Capsule Collider 0 Answers

Capsule collider bounces where two ground colliders meet 2 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