Answer the question
In order to leave comments, you need to log in
How to choose colliders?
Делаю песочнику по типу террарии. Есть мир, поделённый на чанки. Для каждого чанка генерируется примерно такой объект:
Т. е. меш с нужными мне uv координатами.
Теперь вопрос. Как именно мне делать коллайдеры для каждого блока, да так, чтобы была хорошая производительность?
Mesh collider, 2d polygon collider, box2d collider(для каждого блока отдельно) или может что-то ещё? Может воообще реализовать свою коллизию? Так наверное будет наиболее производительно, т. к. я знаю где находится игрок, поэтому могу проверять коллизию только с самыми близкими блоками, коллайдеры блока и игрока прямоугольные, поэтому будет легко рассчитать соприкасаются они или нет. Но, как по мне сделать всё это достаточно сложно, а мне всё таки хочется простого решения которое будет работать здесь и сейчас.
Answer the question
In order to leave comments, you need to log in
Googled the article . There is an opinion that you need to select the outline of a chunk using this method. The vertices of the contour will be the vertices of the polygon collider . The truth is I don’t know how much faster it will turn out, especially if you have a destructible level like in Terraria.
For example , in this article, a guy calculates surfaces using a similar method. True, his level is not destructive.
Another option: find N tiles closest to the main character (mob) and turn on their colliders, turn off everything that does not fall within a certain radius. In Unity, if I'm not mistaken, you can "freeze" an object, i.e. completely turn it off from physical calculations .
I would start with regular BoxCollider2D and look at the performance. In each latest version of the engine, two-dash physics was updated, I think static squares should not consume a lot of resources, especially if you use chunks. If you isolate the generation of colliders in a separate class, then in the future you can easily change the algorithm so that it uses PolygonCollider2D or EdgeCollider2D. I do not recommend writing your own physics, it is unlikely that you will write better than Box2D.
In general, I did this:
This is BoxCollider2D
I tried all the solutions and it turned out to be the most productive. I had to add only a couple of lines in the code, because my blocks are combined and there is just a check to see if there are other blocks nearby. I just made it so that if there is no block on at least 1 side, then the collider is generated.
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question