2017-04-20 3 views
0

Je reçois l'erreur NullReferenceException: objet de référence non définie à une instance d'un objet ThirdPersonCamera.Update() (à Actif/scripts/ThirdPersonCamera.cs: 24)Unité 5 Troisième personne Erreur de script

Mon Code:

using System.Collections; 
using System.Collections.Generic; 
using UnityEngine; 
using System.Runtime.InteropServices; 
using UnityEngine.SocialPlatforms; 
using UnityEngine.UI; 
using UnityStandardAssets.Utility; 

public class ThirdPersonCamera : MonoBehaviour { 

    [SerializeField]Vector3 cameraOffset; 
    [SerializeField]float damping; 

    Transform cameraLookTarget; 
    Player localPlayer; 

    void Awake() { 
     GameManger.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() { 
     Vector3 targetPosition = cameraLookTarget.position + localPlayer.transform.forward * cameraOffset.z + 
       localPlayer.transform.up * cameraOffset.y + 
       localPlayer.transform.right * cameraOffset.x; 

     transform.position = Vector3.Lerp(transform.position, targetPosition, damping * Time.deltaTime); 
    } 
} 

J'ai essayé de changer l'ordre d'exécution du script, mais rien ne fonctionne. Je ne sais pas ce qui ne va pas.

Répondre

1

Assurez-vous qu'un objet GameObject est affecté à la variable LocalPlayer dans votre script. Cet objet recherche dans votre hiérarchie quelque chose appelé 'cameraLookTarget' sans les guillemets. Les questions de capitalisation.

Je recommande de rechercher un objet LocalPlayer dans votre méthode Awake() et si elle est nulle, utilisez Debug.Log ("No local player assigned") pour vous alerter que ce n'est en fait pas assigné.