Every time I attempt to run this code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerController : MonoBehaviour
{
[Header("Horizontal Movement Settings")]
[SerializeField] private float walkspeed = 1;
[SerializeField] private float jumpForce = 45;
private int jumpBufferCounter = 0;
[SerializeField] private int jumpBufferFrames;
[Header("Ground Check Settings")]
[SerializeField] private Transform groundCheckpoint;
[SerializeField] private float groundCheckY = 0.2f;
[SerializeField] private float groundCheckX = 0.5f;
[SerializeField] private LayerMask whatIsGround;
PlayerStateList pState;
private Rigidbody2D rb;
private float xAxis;
public static PlayerController Instance;
private void Awake()
{
if (Instance != null && Instance != this)
{
Destroy(gameObject);
}
else;
{
Instance = this;
}
}
// Start is called before the first frame update
void Start()
{
pState = GetComponent<PlayerStateList>();
rb = GetComponent<Rigidbody2D>();
}
// Update is called once per frame
void Update()
{
GetInputs();
UpdateJumpVariables();
Move();
Jump();
}
void GetInputs()
{
xAxis = Input.GetAxisRaw("Horizontal");
}
private void Move()
{
rb.velocity = new Vector2(walkspeed * xAxis, rb.velocity.y);
}
public bool Grounded()
{
if (Physics2D.Raycast(groundCheckpoint.position, Vector2.down, groundCheckY, whatIsGround)
|| Physics2D.Raycast(groundCheckpoint.position + new Vector3(groundCheckX, 0, 0), Vector2.down, groundCheckY, whatIsGround)
|| Physics2D.Raycast(groundCheckpoint.position + new Vector3(-groundCheckX, 0, 0), Vector2.down, groundCheckY, whatIsGround))
{
return true;
}
else
{
return false;
}
}
void Jump()
{
if (Input.GetButtonUp("Jump") && rb.velocity.y > 0)
{
rb.velocity = new Vector2(rb.velocity.x, 0);
pState.jumping = false;
}
if (!pState.jumping)
{
if (jumpBufferCounter > 0 && Grounded())
{
rb.velocity = new Vector3(rb.velocity.x, jumpForce);
pState.jumping = true;
}
}
}
void UpdateJumpVariables()
{
if(Grounded())
{
pState.jumping = false;
}
if(Input.GetButtonDown("Jump"))
{
jumpBufferCounter = jumpBufferFrames;
}
else
{
jumpBufferCounter--;
}
}
}
I recieve the following Error message over and over when I try to run it, It seems to be something to do with my pState variable, but I’m having trouble finding what’s wrong:
NullReferenceException: Object reference not set to an instance of an object
PlayerController.UpdateJumpVariables () (at Assets/Scripts/PlayerController.cs:103)
PlayerController.Update () (at Assets/Scripts/PlayerController.cs:50)
Help would be greatly appreciated