Godot Version
4.2.1
Question
I’m trying to get a turret to rotate toward enemies, but not instantaneously like look_at
and I’m trying to use the same code to make my creeps look toward where they want to be.
Here’s the code:
func target_position( node : Node2D, position : Vector2, delta : float ):
var target_angle = node.position.angle_to_point( position )
var delta_rotation = rotate_toward( node.rotation, target_angle, delta )
if abs( target_angle - node.rotation ) < delta_rotation:
node.look_at( position )
else:
node.rotate( delta_rotation )
- The
node
is either the turret or the creep. - The
position
is the target (a destination for the creeps, or the nearest (within range) creep.position for the turret) - The
delta
is thedelta
from_process_physics
multiplied by0.00000000001
The issue is that randomly, the turret and/or creep randomly go into spins.
Note that the creeps target is initially their current y but with an x of 1990. The target is updated by either shape casting and ‘seeing’ it, or, at a specific distance (after the shape cast should have seen the target) it is set to the bottom right corner. In the video, the shape casting will always see the target. This seems to be where the creeps start/stop spinning.
Related: the 0.00000000001
seems way too small given how fast the turret actually turns to face a creep.
Related: the tower sometimes disappears after spinning a while (I was lucky to catch it in the video). It still exists in the Remote tree and has healthy values in transform (rotation = 0), and there’s no error logged indicating why it is suddenly invisible.
Video of issue:
Thanks,
Brian.