Just picked up Unity about a week ago, I have really been struggling to fix this problem and referencing overall, I'm well aware that I need to read and watch more tutorials, I just want to get this fixed so I can continue working on my game.

An object reference is required for the non-static field, method, or property `PlayerMovement.activeMoveSpeed`

The first problem was referencing the other Game Object and script, I not sure if its completely fixed now but
at least that not the error that its giving me anymore, I've tried doing what this link says
<https://answers.unity.com/questions/1119537/help-how-do-i-referenceaccess-another-script-in-un.html>
but as you might see it hasn't worked out, every single time I get the compile errors fixed the script doesn't work because the object reference is not set to an instance of an object, any help would be extremely appreciated (the script I'm trying to reference will be at the end)
Thanks

```cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class ShieldAttack : MonoBehaviour
{
    public GameObject shield;
    private Vector3 mousePos;
    private Camera mainCam;
    public bool isDashing;
    private Rigidbody2D rb;

    GameObject Player;
    PlayerMovement playerMovement;
    Shooting shooting;

    // Start is called before the first frame update
    void Start()
    {
        GameObject.FindGameObjectWithTag("EnemyMelee");
        GameObject.FindGameObjectWithTag("Enemy2");

        mainCam = GameObject.FindGameObjectWithTag("MainCamera").GetComponent<Camera>();
        rb = GetComponent<Rigidbody2D>();
    }

    // Update is called once per frame
    void Update()
    {
        mousePos = mainCam.ScreenToWorldPoint(Input.mousePosition);

        Vector3 rotation = mousePos - transform.position;

        float rotZ = Mathf.Atan2(rotation.y, rotation.x) * Mathf.Rad2Deg;

        transform.rotation = Quaternion.Euler(0, 0, rotZ);

        if (Input.GetKeyDown(KeyCode.Space) && playerMovement.dashCoolCounter <= 0 && playerMovement.dashCounter <= 0)
        {
            isDashing = true;
            Instantiate(shield, shooting.bulletTransform.position, Quaternion.identity);
            if (PlayerMovement.activeMoveSpeed == 5)
            {
                DestroyShield();
                isDashing = false;
            }
        }
    }

    void DestroyShield()
    {
        Destroy(gameObject);
    }
}

```

```cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
   public float moveSpeed;
   public Rigidbody2D rb2d;
   private Vector2 moveInput;

   public float activeMoveSpeed;
   public float dashSpeed;

   public float dashLength = 0.5f, dashCooldown = 1f;

   public float dashCounter;
   public float dashCoolCounter;

   [SerializeField] private TrailRenderer tr;

   //Start is called before the first frame update
   void Start()
   {
      activeMoveSpeed = moveSpeed;
   }

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

      if(dashCounter > 0)
      {
         tr.emitting = true;
      }

      if(dashCounter < 0)
      {
         tr.emitting = false;
      }

      moveInput.x = Input.GetAxisRaw("Horizontal");
      moveInput.y = Input.GetAxisRaw("Vertical");

      moveInput.Normalize();

      rb2d.velocity = moveInput * activeMoveSpeed; 

      if (Input.GetKeyDown(KeyCode.Space))
      {

         if (dashCoolCounter <=0 && dashCounter <=0)
         {
            activeMoveSpeed = dashSpeed;
            dashCounter = dashLength;
         }

      }

      if (dashCounter > 0)
      {
         dashCounter -= Time.deltaTime;

         if (dashCounter <= 0)
         {
            activeMoveSpeed = moveSpeed;
            dashCoolCounter = dashCooldown;
         }
      }

      if (dashCoolCounter > 0)
      {
         dashCoolCounter -= Time.deltaTime;
      }

   }
}

```