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 decamonos1 · Aug 26, 2012 at 04:45 PM · collisiondestroyadding

Collision detection between two objects?

I used this code:

     void OnCollisionEnter(Collision Collider){
     if(transform.collider.gameObject.tag == "dna"){
         DNA += 1.0f;
             Destroy(collider.gameObject);
     }
     }

The expected outcome is that when the object this script is on touches an object with the "dna" tag, it will add to the "DNA" variable, and destroy the object with the "dna" tag. Neither of these things work, any ideas or suggestions?

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

2 Replies

· Add your reply
  • Sort: 
avatar image
1

Answer by ScroodgeM · Aug 26, 2012 at 04:46 PM

void OnCollisionEnter(Collision collision){
  if(collision.collider.gameObject.tag == "dna"){
    DNA += 1.0f;
    Destroy(collision.collider.gameObject);
  }
}

first:

if(collider.gameObject.tag == "dna"){

instead of

if(transform.collider.gameObject.tag == "dna"){

transform is local transform. not an object comes to collider

second:

Collision Collider in input params and collider (started from lower case) are different things 8)

use Collision collision on input to avoid mixing and coll, and check collision.collider inside method

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 decamonos1 · Aug 26, 2012 at 05:15 PM 0
Share

Thanks, I tried this too and it didn't work, it's only that way from me trying to figure out why it doesn't work.

avatar image ScroodgeM · Aug 26, 2012 at 05:23 PM 0
Share

i found the second error, check answer again

avatar image decamonos1 · Aug 26, 2012 at 11:28 PM 0
Share

It still doesn't work. Literally no effect to it. Thanks though.

avatar image Ashkan_gc · Aug 27, 2012 at 07:06 AM 0
Share

Did you check my answer. you should have rigidbodies for this message OnCollisionEnter to be sent at all. also tags are case sensitive.

avatar image ScroodgeM · Aug 27, 2012 at 07:29 AM 0
Share

insert Debug.Log("hit") at method body start to check if collision happens.

avatar image
0

Answer by Ashkan_gc · Aug 26, 2012 at 05:29 PM

Actually to read the information of the object that you've collided with you should read data of the object which is passed to the function using collider variable as scroodge said. you should compare it's tag to the value and not your own. When you use transform.gameObject.tag you are getting the reference of your own transform (the object which script is attached to) and then it's gameObject and tag properties. Also the objects should have none kinematic rigidbodies for this to work (at least one of them if i remember correctly). refer to the collision table in manual pages for colliders for more info about this.

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

9 People are following this question.

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

Related Questions

Collision detection between two objects? 1 Answer

collision script to destroy 2 Answers

Destroying object when player walks over it 1 Answer

Why isn't my Death Script Working? 3 Answers

My player is suddenly and rarely destroyd when collecting coins 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