'EnemyAI script not moving the Enemy

I am making my first foray into AI, specifically AI that will follow the player. I am using the A* Path finding project scripts, but used the Brackeys tutorial for the code https://www.youtube.com/watch?v=jvtFUfJ6CP8 Source in case needed. Here's the code

using System.Collections;

using System.Collections.Generic;

using UnityEngine;

using Pathfinding;

public class EnemyAI : MonoBehaviour
{
    public Transform Target;

    public float speed = 200f;

    public float NextWayPointDistance = 3f;

    Path path;

    int currentWaypoint = 0;

    bool ReachedEndOfpath = false;

    Seeker seeker;

    Rigidbody2D rb;

    public Transform EnemyGraphics;

    // Start is called before the first frame update
    void Start()
    {
        seeker = GetComponent<Seeker>();
        rb = GetComponent<Rigidbody2D>();
        InvokeRepeating("UpdatePath", 0f, 1f);
        
    }

    void UpdatePath()
    {
        if (seeker.IsDone())
        seeker.StartPath(rb.position, Target.position, OnPathComplete);
    }

    void OnPathComplete(Path p)
    {
        if (!p.error)
        {
            path = p;
            currentWaypoint = 0;
        }
    }

    // Update is called once per frame
    void fixedUpdate()
    {
        if(path == null)
            return;

            if(currentWaypoint >= path.vectorPath.Count)
            {
                ReachedEndOfpath = true;
                return;

            }
            else
            {
                ReachedEndOfpath = false;
            }

            Vector2 Direction = ((Vector2)path.vectorPath[currentWaypoint] - rb.position).normalized;
            Vector2 Force = Direction * speed * Time.fixedDeltaTime;
            rb.AddForce(Force);

            float distance = Vector2.Distance(rb.position, path.vectorPath[currentWaypoint]);

            if(distance < NextWayPointDistance)
            {
                currentWaypoint++;
            }
        
            if(rb.velocity.x >= 0.01f)
            {
               EnemyGraphics.localScale = new Vector3(-1f, 1f, 1f);
            }else if(rb.velocity.x <= 0.01f)
            {
               EnemyGraphics.localScale = new Vector3(1f, 1f, 1f);
            }
    }
}

How I tried to fix the issue:

  1. I thought it could've been a problem with the speed so I increased it to 10000000, and still nothing
  2. Next I thought it was a problem with the Rigidbody2d so I check there, found the gravity scale was set at 0, so I increased it to 1. It made my enemy fall to the ground but still no movement.
  3. I thought it could've been a problem with the mass and drag, so I set Linear drag and Angular drag to 0, and also set mass to 1. Still nothing.
  4. I set the body type to kinematic, pressed run, nothing. Set the body type to static, pressed run, nothing. Set the body type to Dynamic, pressed run, still nothing.
  5. I tried to make a new target for the enemy to follow, dragged the empty game object i nto the target, pressed run and still didn't move.

I am at a loss on how to fix this.

Please help?



Solution 1:[1]

Looks like maybe a typo? You have:

// Update is called once per frame
void fixedUpdate()
{

but the method is called FixedUpdate(), with a big F in front. You have fixedUpdate, which is NOT the same.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Chuck