Need Help With A Weapon Script

I keep getting these 2 weird errors.
1st one, No Fire Point
UnityEngine.Debug:Log(Object)
Weapon:Awake() (at Assets/Weapon.cs:22)
2nd one, NullReferenceException: Object reference not set to an instance of an object
Weapon.Shoot () (at Assets/Weapon.cs:43)
Weapon.Update () (at Assets/Weapon.cs:30)

Heres my weapon code

using System.Collections;

public class Weapon : MonoBehaviour {

public float fireRate = 0;
public float Damage = 10;
public LayerMask whatToHit;

public Transform BulletTrailPrefab;
public Transform MuzzleFlashPrefab;
float timeToSpawnEffect = 0;
public float effectSpawnRate = 10;

float timeToFire = 0;
Transform firePoint;

// Use this for initialization
void Awake () {
firePoint = transform.FindChild ("FirePoint");
if (firePoint == null) {
Debug.Log ("No Fire Point");
}
}

// Update is called once per frame
void Update () {
if (fireRate == 0) {
if (Input.GetButtonDown ("Fire1")) {
Shoot();
}
}
else {
if (Input.GetButton ("Fire1") && Time.time > timeToFire) {
timeToFire = Time.time + 1/fireRate;
Shoot();
}
}
}

void Shoot () {
Vector2 mousePosition = new Vector2 (Camera.main.ScreenToWorldPoint (Input.mousePosition).x, Camera.main.ScreenToWorldPoint(Input.mousePosition).y);
Vector2 firePointPosition = new Vector2 (firePoint.position.x, firePoint.position.y);
RaycastHit2D hit = Physics2D.Raycast (firePointPosition, mousePosition=firePointPosition, 100, whatToHit);
if (Time.time >= timeToSpawnEffect) {
Effect ();
timeToSpawnEffect = Time.time + 1/effectSpawnRate;
}
Debug.DrawLine (firePointPosition, (mousePosition-firePointPosition)*100, Color.cyan);
if (hit.collider != null) {
Debug.DrawLine (firePointPosition, hit.point, Color.red);
Debug.Log ("We hit " + hit.collider.name + " and did " + Damage + " damage.");
}
}

void Effect () {
Instantiate (BulletTrailPrefab, firePoint.position, firePoint.rotation);
Transform clone = Instantiate (MuzzleFlashPrefab, firePoint.position, firePoint.rotation) as Transform;
clone.parent = firePoint;
float size = Random.Range (0.6f, 0.9f);
clone.localScale = new Vector3 (size, size, size);
Destroy (clone.gameObject, 0.02f);
}
}

Do you have an object, that is called “FirePoint” exactly like this and its parented to an object that contains this script? Every problem seems to be because it didn’t find one

like @gorbit99 said, your firePoint is null like you have already a debug log which says “No Fire Point” if firePoint is null. so using firePoint.position in Shoot() causes a null ref exception.

Just fix your problem in Awake() and check where you have your firePoint and why it’s not found. or, make it [SerializeField] Transform firePoint; or public Transform firePoint; and drag the firePoint of the weapon directly to the script (in Inspector)

Thanks for the help guys. The public Transform work. Don’t know why i didn’t think of that