Почему код не работает?

Почему этот код не работает?

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class BigGun : MonoBehaviour {

public Transform playerPos;
public Transform shootPoint;
public GameObject bullet;
private Animator anim;
public float timer;
private float newTimer;
private Vector2 spacing;
public float spacingValue;

void Start()
{
    anim = GetComponent();
    newTimer = timer;
}

void Update () {

    Vector2 spacing = playerPos.position - transform.position;

    newTimer -= Time.deltaTime;

    if (spacing.x < spacingValue

Ну, код вообще, если честно, написан "не очень"...

Во первых, newTimer никогда не будет равен нулю, а судя по вашему коду у вас это вполне возможно.

Во вторых, строго сравнивать float - это очень плохо. Скорее стоит сравнивать числа с плавающей точкой по модулю и с учётом погрешностей (иначе вероятность того что ваши числа будут "одинаковыми" бесконечно стремится к нулю).

Это из явно очевидного. Вообще в вашем случае ошибка больше логическая. Вот давайте представим ситуацию:

Ваш newTimer будет равен одной секунде. Time.deltaTime уже исходя только из названия - величина непостоянная, и вероятность того что за тех же 10 фреймов (например (а обновление вызывается каждый фрейм)) сумма вашей переменной deltaTime будет почти нулём (а точнее - СТРОГО 1 секунда). Так что в вашем случае скорее нужно какое-то нестрогое условия, что-то вроде newTimer <= 0.