Witam. Stworzyłem prosty skrypt odpowiedzialny za poruszanie się kamery za graczem.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraMove : MonoBehaviour
{
public Transform player;
public Transform cameraa;
public int cameravalue = 1;
public void Update()
{
if (cameravalue == 1)
{
Vector3 vector = new Vector3(3f, 2.5f, 0);
moveCamera(vector);
}
else if (cameravalue == 2)
{
Vector3 vector = new Vector3(3f, 5.5f, 0);
moveCamera(vector);
}
Debug.Log(cameravalue);
}
void moveCamera(Vector3 vector)
{
Vector3 newPosition = player.position + vector;
cameraa.position = Vector3.Lerp(cameraa.position, newPosition, Time.deltaTime * 2f);
cameraa.LookAt(player);
}
}
Oraz stworzyłem dwa dodatkowe skrypty. Ich zadaniem jest ustawianie dla zmiennej "cameravalue" odpowiedniej wartości gdy gracz wejdzie w daną kolizję:
Tak prezentuje się drugi skrypt:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Cam2 : MonoBehaviour {
private void OnTriggerEnter(Collider other)
{
var cam = other.GetComponent<CameraMove>();
cam.cameravalue = 2;
}
}
Błąd pojawia się dopiero w unity gdy gracz wejdzie w kolizję. Dokładny błąd to:
NullReferenceException: Object reference not set to an instance of an object
Cam2.OnTriggerEnter (UnityEngine.Collider other) (at Assets/Cam2.cs:10)
Ktoś wie jak rozwiązać ten błąd? Może robię coś po prostu źle. Ogólnie chodzi mi o to by drugi skrypt "cam2" ustawiał dla zmiennej znajdującej się w pierwszym skrypcie "CameraMove" wartość "2" dla zmiennej "cameravalue" gdy gracz wejdzie w kolizję z obiektem.