|
|
|
|
Attention |
Topic was automatically imported from the old Question2Answer platform. |
|
Asked By |
P0werman1 |
I have a CollisionPolygon2D
with a defined shape, but in the “node” area it doesn’t show any signal for collision? It lists:
draw()
hidden()
item_rect_changed()
visibility_changed()
child_entered_tree(node:Node)
child_exiting_tree(node:Node)
ready()
renamed()
tree_entered()
tree_exited()
tree_exiting()
property_list_changed()
script_changed()
However, according to what I was reading in the docs and on other forum posts, it should have area_entered
for entering an Area2D
, and something else I couldn’t find for colliding with another hitbox.
What’s going on? Can someone help me?
|
|
|
|
Reply From: |
jgodfrey |
Generally, the signals you’re referring to will belong to the parent of the collision object (an Area2D
for example). A typical scene layout might look like:
Area2D
+-- CollisionShape2D
+-- Sprite
The Area2D
requires some sort of collision object child to detect collisions, but the signals you’re referring to are on the Area2D
node itself.
I have it in a CharacterBody2D, is input_event(viewport:Node, event:InputEvent, shape_idx:int)
what I’m looking for? How do I use it?
P0werman1 | 2023-05-10 14:13
Ah, with a CharacterBody2D
, you should be moving it via move_and_slide()
or move_and_collide()
.
move_and_collid()
returns a KinematicCollision2D
directly. And, with move_and_slide()
you can process collisions via get_slide_collision_count()
and get_slide_collision()
.
I’d recommend you read this docs page thoroughly, as it provides details on collision detection when using a CharacterBody2D
.
jgodfrey | 2023-05-10 16:55
Thank you! I’d been moving the Node2D
that the CharacterBody2D
was inside of…
Should I not have it inside of a Node2D
?
P0werman1 | 2023-05-10 17:02
That sounds like an odd setup. Unless you have a sound reason for doing so (I’d be curious what this is), I probably wouldn’t do that…
jgodfrey | 2023-05-10 17:38
I didn’t, so I removed it. I just had the CharacterBody2D
inside of a Node2D
. No real reason lol.
P0werman1 | 2023-05-10 17:42