godotengine / godotengine/godot
`Area2D` `monitorable`, `monitoring` and `area_enter` logic flaw
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
v4.3.stable.official [77dcf97d8]
### System information
Godot v4.3.stable - Windows 10.0.22621 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 4060 Laptop GPU (NVIDIA; 31.0.15.2887) - 13th Gen Intel(R) Core(TM) i7-13700H (20 Threads)
### Issue description
There are two area2d,we call them A and B, make A can check B. make A's area_enter connect to a function to observe.
When they are overlaping, turn A' monitoring(true -> false -> true), A' area_enter will emit. (It is right)
However, turn B' monitorable(true -> false -> true), A' area_enter wouldn't emit. ( I think it should emit)
Additionally, every change on B's monitoring (true -> false or false -> true) will makes A' area_enter emit. ( I think it shouldn't emit according to the principle)
I hope that a appropriate change will happen on there and make them liked described.
### Steps to reproduce
1. open the function "display collision area"
2. press "D" until the small area overlap with the big .
3. change B'monitoring and monitorable,then oberve
### Minimal reproduction project (MRP)
[test.zip](https://github.com/user-attachments/files/18120274/test.zip)
Contributor guide
Research direction
Start by opening the attached test.zip and reproducing the Area2D overlap scenario using the “display collision area” function and the D key. Inspect the monitoring, monitorable, and area_enter behavior described in the report; done means signal emission matches the expected behavior for each property change.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp, godot
- Domain
- game-dev
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 38/100