Attention | Topic was automatically imported from the old Question2Answer platform. | |
Asked By | Belal |
I have a characterBody2D with a raycast2D. In the code I have a fire() function which works by detecting if the raycast is hitting anything( if ray.is_colliding) and getting the object (ray.get_collider) and deleting it. I noticed that every time I shoot the raycast only updates it’s position, after my fire() function is called. It is essentially a frame late. I verified my assumption with turning collision shapes visible in the debug menu. So I called ray.force_raycast_update() but it didn’t change anything. I called it every time I change the node’s position or angle in code, and directly before calling my fire() function. That also didn’t work, so I wrote:
await get_tree().create_timer(0.01).physics_frame
It solved the issue, and the waiting isn’t noticible, but it caused an issue in the movement and character trail, which I can’t solve.
Please tell me a solution.
Hi …
You have to provide your code in order to understand what is happening
Are you using raycast2D as a bullets ?
Zylo_X | 2023-03-26 11:22
Simplified:
bullet()
ray.force_raycast_update()
if ray.is_colliding():
if ray.ge_collider().is_in_grouop("enemy's"):
ray.get_collider().queue_free()
particles()
func input(event : Inputevent) -> void:
if event is InputEventScreenTouch:
if event.index == 1:
look_at(get_mouse_position)
ray.force_raycast_update()
fire()```
Note that my code has no syntax errors,
but I may have mistyped some function names here.
Also bullet() and particles() are irrelevant to the problem.
[wrap=footnote]Belal | 2023-03-26 11:43[/wrap]
I am using a raycast2D to detect enemys and instancing
a bullet rigidbody2D node for visuals.
Belal | 2023-03-26 11:45