i got tuorial on youtube channel stevie rof Third Person Shooter E23: Player States - YouTube in this episode make me struggle spend long time a day.
script execution order is correct like stevie order
error ;
NullReferenceException: Object reference not set to an instance of an object
ThirdPersonCamera.Update () (at Assets/Team9/Scripts/Cameras/ThirdPersonCamera.cs:48)
line of error:
if (localPlayer.PlayerState.WeaponState == PlayerState.EWeaponState.AIMING || localPlayer.PlayerState.WeaponState == PlayerState.EWeaponState.AIMFIRING)
cameraRig = aimCamera;
here is the code of camera
using System.Collections;
using UnityEngine;
public class ThirdPersonCamera : MonoBehaviour {
[System.Serializable]
public class CameraRig
{
public Vector3 CameraOffset;
public float Damping;
}
//0.53, 0.39, -5.8
//5
[SerializeField]
CameraRig defaultCamera;
[SerializeField]
CameraRig aimCamera;
Transform cameraLookTarget;
Player localPlayer;
void Awake () {
GameManager.Instance.OnLocalPlayerJoined += HandleOnLocalPlayerJoined;;
}
void HandleOnLocalPlayerJoined (Player player)
{
localPlayer = player;
cameraLookTarget = localPlayer.transform.Find("cameraLookTarget");
if (cameraLookTarget == null)
cameraLookTarget = localPlayer.transform;
}
// Update is called once per frame
void Update () {
if (localPlayer == null)
return;
CameraRig cameraRig = defaultCamera;
if (localPlayer.PlayerState.WeaponState == PlayerState.EWeaponState.AIMING || localPlayer.PlayerState.WeaponState == PlayerState.EWeaponState.AIMFIRING)
cameraRig = aimCamera;
Vector3 targetPosition = cameraLookTarget.position + localPlayer.transform.forward * cameraRig.CameraOffset.z +
localPlayer.transform.up * cameraRig.CameraOffset.y +
localPlayer.transform.right * cameraRig.CameraOffset.x;
Quaternion targetRotation = Quaternion.LookRotation (cameraLookTarget.position - targetPosition, Vector3.up);
transform.position = Vector3.Lerp (transform.position, targetPosition, cameraRig.Damping * Time.deltaTime);
transform.rotation = Quaternion.Lerp (transform.rotation, targetRotation, cameraRig.Damping * Time.deltaTime);
}
}