Closed Jamtoad closed 2 years ago
Hello again!
Hmm, that's weird... The functionality should be the same regardless of scripting language, so my first guess is that you setup the objects and/or scene differently in your tests.
One test that you could do is write the exact same logic in Lua and GDScript and run each of them in the same object in your problematic scene. I really mean the same object. Try with one script first, see the error, then change the script in the same object to the other implementation and run again. I don't know if that's what you did already, but this is a way to isolate the scripts from other factors that could be causing the problem.
I won't discard that something in the plugin could be wrong, of course. Anything different is a potential cause for different behaviors. Programming, right? =P Without a reproduction project to debug this, it's difficult to think of more possibilities. Do you have/could you make a minimal project with a scene setup with the bug happening, that I could run and reproduce the problem?
I did some more testing. I did realize my error. get_overlapping_areas() gets areas that have the layer as a mask too. So for example.
Object is on Layer 7 but has a mask for Layer 1 Player is on Layer 1 but has a mask for Layer 6
get_overlapping_areas() will return the object on Layer7 because its mask is for Layer 1. This is my issue I believe. Sorry for posting it here haha, the Godot Documentation doesn't really explain this part of it.
Hi, me again! I also noticed that the
Area2D:get_overlapping_areas()
appears to get all overlapping areas regardless of mask.I have the player on Layer 1, and masked to see layer 6. I also have an object on Layer 7.
It is picking up the object on layer 7, even know I do not have it checked. I have tested the same code in GDScript and it appears to get only the objects on layer 6. Whilst the Lua code gets objects on all layers.
Any ideas?
Thank you and have a good one!