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 SrBilyon · Jun 18, 2012 at 03:14 AM · collidermeshtriggerboxplatforms

Box Trigger and Mesh Collider on one object.

Hello,

I'm creating a vanishing platform and I have my code working, but to be honest, I'm not sure how I'm getting the result I'm getting based off the code I wrote.

To elaborate, I have attached a scaled box trigger on to an object that has a mesh collider. Now, when the player walks into the box trigger, the platform (renderer) will disappear after a set amount of seconds. The platform will also set the mesh collider as a trigger so that the physics are pretty much gone, thus, allowing the player to fall.

After another set amount of seconds, the platform will come back and the mesh collider's trigger value will be set to false. This is the part that confuses me (but I'm glad it's working), the box trigger is completely unaffected every time.

Seeing how the box trigger is technically a collider as far as I thought, I would think that setting the "unspecified" collider's trigger to false would disable both the mesh collider's AND box trigger's trigger to false.

Anyone know why this may be happening, and just to be safe, does anyone know a way to specify which collider to manipulate in code?

 using UnityEngine;
 using System.Collections;
 
 public class VanishingPlatform : MonoBehaviour
 {
     public float vanishTime;
 
     //-------------------
     // COLLIDER
     //-------------------
     void OnTriggerEnter (Collider hit)
     {
         
         if (hit.gameObject.tag == "Player") {
             Invoke ("Vanish", vanishTime);
             Debug.Log ("About to vanish!!!");
         }
     }
     
     /// <summary>
     /// Vanish this instance.
     /// </summary>
     void Vanish()
     {
         this.transform.collider.isTrigger = true;
         this.transform.renderer.enabled = false;
         Invoke("Reappear", vanishTime);
     }
     /// <summary>
     /// Reappear this instance.
     /// </summary>
     void Reappear()
     {
         this.transform.collider.isTrigger = false;
         this.transform.renderer.enabled = true;
         
     }
 }
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
2
Best Answer

Answer by aldonaletto · Jun 18, 2012 at 04:30 AM

I suppose the collider property works like audio or other GameObject properties: they only return the first component (GetComponents is used in order to access the others).
Unfortunately, Unity tells nothing about the component order, thus it's possible (although not likely) that in the future something gets changed and your script stop working.
If you want to avoid this risk, child the trigger volume to the platform instead of adding it, and move the code above to the trigger - with some modifications, of course:

public float vanishTime;

 void OnTriggerEnter (Collider hit)
 {
    if (hit.gameObject.tag == "Player") {
      Invoke ("Vanish", vanishTime);
    }
 }

 void Vanish()
 {
     transform.parent.collider.isTrigger = true;
     transform.parent.renderer.enabled = false;
     Invoke("Reappear", vanishTime);
 }

 void Reappear()
 {
     transform.parent.collider.isTrigger = false;
     transform.parent.renderer.enabled = true;
 }

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 SrBilyon · Jun 18, 2012 at 06:30 AM 0
Share

Thanks for the advice. Your method of child triggering was the way I was actually doing it before. I suppose I wanted to be lazy this time around, but I'll probably revert to the method you spoke of.

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

4 People are following this question.

avatar image avatar image avatar image avatar image

Related Questions

A question about collisions. 1 Answer

Box colliders from procedural mesh 1 Answer

Is Mesh Collider Optimal for GUI? 2 Answers

Internal collisions 1 Answer

Imported Blender meshes, added Unity box colliders - scene goes choppy, slow. 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