NullReferenceException: Object reference not set to an instance of an object TouchHandler.TouchControl () (at Assets/Script/TouchHandler.cs:78) TouchHandler.Update () (at Assets/Script/TouchHandler.cs:39)
ray = Camera.main.ScreenPointToRay(touch.position);
LINE 78.
I get this error and i cant figure out why. I thought some fresh eyes might help, anyone?
Thank You.
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");
}
}
}
Please check that Camera have "MainCamera" tag assigned.
If there is some other tag assigned, then it will not be considered as main camera.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.