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 smnerat · Dec 21, 2015 at 05:17 AM · physics2dcollider2dedgesimulate

Why is there a Physics2D.Simulate spike with several edge (~20) colliders?

So I have a scene with several rotating rings. The basic idea is that the player jumps between rings without hitting the particle systems. To control the player I have a circle collider that the player raycasts against to move forward and backward. This circle collider is where the grey circle is in the image I attached, its just not highlighted. To detect if the player hits a particle system, I have an edge collider that is on top of the particle system as shown by the green line in the picture.

I have a relatively large spike in Physics2D.Simulate when I run the game with the edge colliders. I'm usually at ~1-2 ms without the edge colliders and upwards of 10 ms with them. I re-scale the parent object so that the rings increase in size over time and make room for new rings to appear in the center. The parent object that is re-scaled contains only the particle systems and edge collider. I've already disabled collisions in the matrix, so only the edge collider and the player interact.

Could the spike be caused by re-scaling the parent object every frame? Would it be better to just set edge.points each frame? I thought about using a set of box colliders to create a collider on top of the particle system in an arc shape, but I would need several boxes per particle system and would end up with 5 to 10 times as many colliders. Is there a better way to do this?

alt text

ring.png (197.8 kB)
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
0

Answer by hulahoolgames · Dec 21, 2015 at 06:25 AM

Do the particle systems have rigidbodies attached? If so make sure you change their transform via rigidbody.transform instead of directly accessing transform on the gameobject. I had similar spikes in my game and they reduced a lot by making this change. If you access and change the transform directly then the colliders have to be recreated. Instead, change it via rigidbody.transform. Hope this is helps!

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

Answer by wibble82 · Dec 21, 2015 at 12:16 PM

Hi there

I believe (could be wrong) edge colliders are like mesh colliders in 3D, and thus contain an optimised representation internally for doing queries against (such as collision tests). However, this optimised representation is based off the object at a certain scale, and thus needs rebuilding if you rescale (which is slow).

If you remove the scaling every frame I suspect it'll speed up no end.

Given what you're doing is pretty simple (the edges are just portions of a circular edge, so easy to work out when the circular player has hit them), I'd recommend just writing the 'have I hit the edge' maths yourself rather than rely on the physics engine to do it.

-Chris

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

32 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

Related Questions

Workarounds for Higher Control When Using Physics2D? 0 Answers

Physics 2d raycaster from EventSystems for overlapped colliders 0 Answers

Bullets go through collider even with continuous collision detection! 0 Answers

2D physics object acts weird when pressed into other physics object 0 Answers

Executing code on touching edges of a collider from the inside 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