Why is my melee attack not working?
I went ahead and watched a video on how to do 2D melee attacks and copied most of his code but for me it magically doesn't work. As soon as I attack it gives me this error message: NullReferenceException: Object reference not set to an instance of an object PlayerMelee.Update () (at Assets/Character/Script/PlayerMelee.cs:27)
From this I figured out that the error was where I subtracted health from the enemy and I tried making multiples references but it always failed when I try to change its health. The weirdest thing is that this worked in the video.
Here is my code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMelee : MonoBehaviour
{
public float StartTimeBtwAttack;
private float TimeBtwAttack;
public Transform AttackPosition;
public Vector2 AttackRange;
public LayerMask WhatIsEnemy;
public float damage;
// Update is called once per frame
void Update()
{
if (TimeBtwAttack <= 0)
{
if (Input.GetKeyDown(KeyCode.M))
{
TimeBtwAttack = StartTimeBtwAttack;
Collider2D[] EnemiesToDamage = Physics2D.OverlapBoxAll(AttackPosition.position, AttackRange, WhatIsEnemy);
for (int i = 0; i < EnemiesToDamage.Length; i++)
{
EnemiesToDamage[i].GetComponent<Enemy>().health -= damage;
}
}
}
else
{
TimeBtwAttack -= Time.deltaTime;
}
}
And here is the video: video link
Your answer
Follow this Question
Related Questions
MonoDevelop Unity API reference function with wrong path. How to Fix it? 1 Answer
Create an array of scripts that don't affect each other? 1 Answer
Get reference to spawned object from server on client 1 Answer
Slider with filter / search engine -1 Answers
Reference a script on a gameobject that is disabled in scene 0 Answers