NullReferenceException: Object reference not set to an instance of an object Player.OnCollisionEnter2D (UnityEngine.Collision2D other) (at Assets/Scripts/Player.cs:93)
This warning appears in console every time my player collide an enemy. How can I solve that?
line 93 is StartCoroutine(player.Knockback(0.002f, 100, player.transform.position));
using System.Collections.Generic;
using UnityEngine;
public class Player : MonoBehaviour
{
public GameObject Death;
public int maxHealth = 100;
public int currentHealth;
public Animator animator;
private Rigidbody2D rb2d;
public HealthBar healthBar;
public float respawnDelay;
private Player player;
public GameObject coins;
public GameObject coinado;
public GameObject healthBAR;
Vector3 pushDirection;
Rigidbody2D rb;
// Start is called before the first frame update
void Start()
{
currentHealth = maxHealth;
healthBar.SetMaxHealth(maxHealth);
}
void Update()
{
/*if (Input.GetKeyDown(KeyCode.Space))
{
TakeDamage(20);
}*/
if(currentHealth > maxHealth) {
currentHealth = maxHealth;
}
if(currentHealth <= 0) {
currentHealth = 0;
GameObject.Find("Player").GetComponent<CharacterController2D>().enabled = false;
GameObject.Find("Player").GetComponent<PlayerMovement>().enabled = false;
Die();
}
}
public void TakeDamage(int damage)
{
currentHealth -= damage;
FindObjectOfType<Audiio>().Play("PlayerHurt");
animator.SetTrigger("Hurt");
if (currentHealth <=0)
{
Die();
}
healthBar.SetHealth(currentHealth);
}
void Die() {
Death.SetActive(true);
coins.SetActive(false);
coinado.SetActive(false);
healthBAR.SetActive(false);
Time.timeScale = 0.5f;
FindObjectOfType<Audiio>().Play("PlayerDeath");
animator.SetBool("IsDead", true);
Respawn();
}
public void Respawn(){
Time.timeScale = 1f;
StartCoroutine("RespawnCoroutine");
}
public IEnumerator RespawnCoroutine(){
yield return new WaitForSeconds(respawnDelay);
Application.LoadLevel(Application.loadedLevel);
}
public IEnumerator Knockback(float knockDur, float knockbackPwr, Vector3 knockbackDir) {
float timer = 0;
while (knockDur > timer) {
timer +=Time.deltaTime;
//rb2d.AddForce(new Vector3(knockbackDir.x *-2000, knockbackDir.y*knockbackPwr, transform.position.z));
}
yield return 0;
}
private void OnCollisionEnter2D(Collision2D other)
{
if(other.gameObject.tag == "Enemy")
{
TakeDamage(30);
StartCoroutine(player.Knockback(0.002f, 100, player.transform.position));
}
}
}