2016-05-02 8 views
-1

NullReferenceException: Objektreferenz nicht auf eine Instanz eines Objekts gesetzt TouchHandler.TouchControl() (unter Assets/Script/TouchHandler.cs: 78) TouchHandler.Update()() (bei Aktiva/Script/TouchHandler.cs: 39)Unity3D: Ich kann keine Lösung für NullReferenceException finden

ray = Camera.main.ScreenPointToRay(touch.position); LINE 78.

bekomme ich diesen Fehler, und ich kann nicht herausfinden, warum. Ich dachte, ein paar frische Augen könnten helfen, irgendjemand?
Danke.

using UnityEngine; 
using System.Collections; 

public class TouchHandler : MonoBehaviour { 


    /*****All the touch variables******/ 
    private Vector2  fp;    // first finger position 
    private Vector2  lp;    // last finger position 
    private float  angle;   
    private float  swipeDistanceX; 
    private float  swipeDistanceY; 
    private int   swipeDistance = 50; // Distance fingure to travell to register as a swipe 
    private Touch  touch;   // touch variable  



    /*****All the Raycast variables******/ 
    Ray ray; 
    RaycastHit hitInfo = new RaycastHit(); 

    /*****All the PlayerController script variables******/ 
    private PlayerController PC_component; 


    //private MovementHandler movementHandlerScriptComponent; 


    void Start() 
    { 
     PC_component = GetComponent<PlayerController>(); 

     //movementHandlerScriptComponent = GetComponent<MovementHandler>(); 
     //movementHandlerScriptComponent.SetisBaseNameSet(false); 
    } 

    void Update() 
    { 
     TouchControl(); 
    } 

    void OnGUI() 
    { 
     foreach(Touch t in Input.touches) 
     { 
      string message = ""; 

      message += "ID: "  + t.fingerId   + "\n"; 
      message += "Phase: " + t.phase.ToString() + "\n"; 
      message += "TapCount: " + t.tapCount   + "\n"; 
      message += "X: "  + t.position.x   + "\n"; 
      message += "Y: "  + t.position.y   + "\n"; 
      message += "Delta: " + t.deltaPosition  + "\n"; 
      int num = t.fingerId; 

      GUI.Label(new Rect(0 + 130 * num, 0, 120, 120), message); 

     } 
    } 
    void castingRay() 
    { 
     if(Physics.Raycast(ray,out hitInfo)) 
     { 
      if(hitInfo.transform.tag == "Base") 
      { 
       PC_component.spawnPlayer(hitInfo); 

       //movementHandlerScriptComponent.Setsb_(hitInfo); 
       //movementHandlerScriptComponent.SetisBaseNameSet(true); 
      } 
     } 
    } 
    void TouchControl() 
    { 
     if(Input.touchCount == 1) 
     { 
      touch = Input.GetTouch(0); 
      ray = Camera.main.ScreenPointToRay(touch.position); 

      if (touch.phase == TouchPhase.Began) 
      { 
       fp = touch.position; 
       lp = touch.position; 

       //Raycasting 
       //if(movementHandlerScriptComponent.GetisBaseNameSet() == false) 
       if(PC_component.isPlayerSpawned == false) 
        castingRay(); 
      } 
      if (touch.phase == TouchPhase.Moved) 
      { 
       lp = touch.position; 
       swipeDistanceX = Mathf.Abs((lp.x-fp.x)); 
       swipeDistanceY = Mathf.Abs((lp.y-fp.y)); 
      } 
      if(touch.phase == TouchPhase.Ended) 
      { 
       angle = Mathf.Atan2((lp.x-fp.x),(lp.y-fp.y))*57.2957795f; 
       swipeControlls(); 
      } 
     } 
    } 

    void swipeControlls() 
    { 
     if(angle > 60 && angle < 120 && swipeDistanceX > swipeDistance) 
     { 
      Debug.Log("right"); 
      PC_component.moveDirection = "right"; 
     } 
     if(angle > 150 || angle < -150 && swipeDistanceY > swipeDistance) 
     { 
      Debug.Log("down"); 
     } 
     if(angle < -60 && angle > -120 && swipeDistanceX > swipeDistance) 
     { 
      Debug.Log("left"); 
      PC_component.moveDirection = "left"; 
     } 
     if(angle > -30 && angle < 30 && swipeDistanceY > swipeDistance) 
     { 
      Debug.Log("up"); 
     } 
    } 



} 
+1

Nun, welche Linie 78? –

+0

@JonSkeet Tut mir leid ray = Camera.main.ScreenPointToRay (touch.position); dieses –

+1

Richtig, und haben Sie überprüft, dass 'touch' nicht null ist? Und 'Camera.main'? Das sind die offensichtlichen Möglichkeiten. –

Antwort

2

Bitte überprüfen Sie, ob der Kamera die Markierung "MainCamera" zugewiesen wurde.

Wenn ein anderes Tag zugewiesen ist, wird es nicht als Hauptkamera betrachtet.

+0

Danke Kumpel arbeitete wie ein Charme! –

Verwandte Themen