Wayback Machinekoobas.hobune.stream
May JUN Jul
Previous capture 12 Next capture
2021 2022 2023
1 capture
12 Jun 22 - 12 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 JeddJedd · Aug 01, 2017 at 02:34 PM · physics2dcollider2dcollision2dlayermasklayercollision

Physics2D.SetLayerCollisionMask delays before being applied

I'm currently working on a 2D platformer, and if the player touches a fatal hazard but has an extra life, they will temporarily become invulnerable, and able to walk through obstacles.

So the way I have this set up is that there are two public LayerMask objects in the character controller script. One for vulnerable, one for invulnerable. I set the values of these layer masks in Unity in the inspector for the character prefab.

The vulnerable LayerMask collides with hazards, obstacles, ground, power ups, and most other things.

The invulnerable (I call it the ghostLayerMask) LayerMask collides only with ground (prevents player from falling through floor -- only the main ground elements are set to this layer) and powerups.

But I'm getting inconsistent results using Physics2D.SetLayerCollisionMask() to set these to the character.

Layer 8 is dedicated to the main character so my code looks like this:

 if (invulnerable) 
 {
 Physics2D.SetLayerCollisionMask(8, ghostLayerMask);
 }
 else
 {
 Physics2D.SetLayerCollisionMask(8, vulnerableLayerMask);
 }

It does work, but very inconsistently. After some debug logs and break points, I left the Physics2D Project Settings window open while running the game. I can see from the Layer Collision Matrix that after these methods are called, it takes 1 or 2 seconds to kick in. This, of course, makes for a bad player experience.

I've tried moving the if (invulnerable) check to Update() and FixedUpdate(), but I see the same results. The Console shows the method executed, but the Layer Collision Matrix only updates a few seconds later.

Is there a Physics2D flag I need to set or something? Any help or suggestions appreciated.

Unity 2017.1, Mac OS 10.12.5, iOS Platform in Build Settings

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

0 Replies

· Add your reply
  • Sort: 

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

69 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 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 avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

After Collision Matrix change in runtime, effects not immediatly visible 1 Answer

using IsTouchingLayer without collision 0 Answers

Is Overlap Circle Supposed to return inactive colliders? 1 Answer

Workarounds for Higher Control When Using Physics2D? 0 Answers

Physics2D.Linecast ignoring walls 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