AbsolutePickle42
AbsolutePickle42

Reputation: 61

Raycast2D end not detecting collision

I have a Raycast2D where I want to detect collision with the enemy, but it does not collide at the end. What I'm saying is that it only detects collision at the place where it originates. Here is my code:

extends KinematicBody2D

export var speed = 200
var velocity = Vector2.ZERO
var enemy = 0

onready var navigation_agent = $NavigationAgent2D
onready var bullet = preload("res://Bullet.tscn").instance()

func _ready():
    navigation_agent.connect("velocity_computed", self, "move")
    $RayCast2D.global_rotation = self.global_rotation - 90

func _input(event):
    if event.is_action_pressed("mouse_right"):
        navigation_agent.set_target_location(event.get_global_position())

func _process(_delta):
    if $RayCast2D.is_colliding():
        if $RayCast2D.get_collider().is_in_group("enemy_ground_troop"):
            enemy = $RayCast2D.get_collider()
            velocity = Vector2.ZERO
            ranged_attack()

    if navigation_agent.is_navigation_finished():
        return
    
    velocity = global_position.direction_to(navigation_agent.get_next_location()) * speed

    look_at(navigation_agent.get_next_location())

    navigation_agent.set_velocity(velocity)

func move(velocity):
    velocity = move_and_slide(velocity)

func ranged_attack():
    add_child(bullet)
    bullet.global_position = self.global_position
    
    bullet.target = enemy.global_position

Could someone help me fix this?

Upvotes: 0

Views: 660

Answers (2)

DodoIta
DodoIta

Reputation: 1

Are you sure the raycast is enabled under the inspector?

Upvotes: 0

hamobi
hamobi

Reputation: 8130

are you debugging the physics collisions during runtime? you should be able to see if the line is intersecting or not.

look under Debug > Visible Collision Shapes

also try

$RayCast2D.force_raycast_update() inside of _process and see if that makes some difference.

Upvotes: 0

Related Questions