Want to go further in the course but I am stuck because of a few errors. As the code is here it says unexpected symbol “newLayer” (33,29).
using UnityEngine;
public class CameraRaycaster : MonoBehaviour
{
public Layer[] layerPriorities = {
Layer.Enemy,
Layer.Walkable
};
[SerializeField] float distanceToBackground = 100f;
Camera viewCamera;
RaycastHit m_hit;
public RaycastHit hit
{
get { return m_hit; }
}
Layer m_layerHit;
public Layer layerHit
{
get { return m_layerHit; }
}
public delegate void OnLayerChange(Layer newLayer); // Declare delegate type
public event OnLayerChange layerChangeObservers; // Instantiate observer set
//Event protects onlayerchange from being overwritten (can only be += or -=
void Start()
{
viewCamera = Camera.main;
layerChangeObservers(Layer newLayer); // Call delegates
}
void Update()
{
// Look for and return priority layer hit
foreach (Layer layer in layerPriorities)
{
var hit = RaycastForLayer(layer);
if (hit.HasValue)
{
m_hit = hit.Value;
if (layerHit != layer) { //if layer changed
layerHit = layer;
layerChangeObservers(layer); //call delegates
}
m_layerHit = layer;
return;
}
}
// Otherwise return background hit
m_hit.distance = distanceToBackground;
m_layerHit = Layer.RaycastEndStop;
}
RaycastHit? RaycastForLayer(Layer layer)
{
int layerMask = 1 << (int)layer; // See Unity docs for mask formation
Ray ray = viewCamera.ScreenPointToRay(Input.mousePosition);
RaycastHit hit; // used as an out parameter
bool hasHit = Physics.Raycast(ray, out hit, distanceToBackground, layerMask);
if (hasHit)
{
return hit;
}
return null;
}
}
If I remove what is in the brackets (Layer newLayer) it says that it doesn’t take 0 arguments and another error comes up saying layerhit can’t be assigned to it is read only. I do not understand I followed the course exactly