Unity Error: Index was outside the bounds of the array

Hello i downloaded a Unity Pack today and wanted to test it but it doesn`t worked. If i run i get this error IndexOutOfRangeException: Index was outside the bounds of the array.

The error occured in line 53 and marked is “Vector3 a = Input.touches[this.m_Id].position;”

Where is the error, any sugesstions? With best regards!

using System;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
using UnityStandardAssets.CrossPlatformInput;

namespace FlightKit
{
public class AirplaneTouchControl : MonoBehaviour, IPointerDownHandler, IEventSystemHandler, IPointerUpHandler
{
private void OnEnable()
{
this.CreateVirtualAxes();
}

    private void CreateVirtualAxes()
    {
        this.m_UseX = (this.axesToUse == AirplaneTouchControl.AxisOption.Both || this.axesToUse == AirplaneTouchControl.AxisOption.OnlyHorizontal);
        this.m_UseY = (this.axesToUse == AirplaneTouchControl.AxisOption.Both || this.axesToUse == AirplaneTouchControl.AxisOption.OnlyVertical);
        if (this.m_UseX)
        {
            this.m_HorizontalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(this.horizontalAxisName);
            CrossPlatformInputManager.RegisterVirtualAxis(this.m_HorizontalVirtualAxis);
        }
        if (this.m_UseY)
        {
            this.m_VerticalVirtualAxis = new CrossPlatformInputManager.VirtualAxis(this.verticalAxisName);
            CrossPlatformInputManager.RegisterVirtualAxis(this.m_VerticalVirtualAxis);
        }
    }

    private void UpdateVirtualAxes(Vector3 value)
    {
        if (this.m_UseX)
        {
            this.m_HorizontalVirtualAxis.Update(value.x);
        }
        if (this.m_UseY)
        {
            this.m_VerticalVirtualAxis.Update(value.y);
        }
    }

    private void Update()
    {
        if (!this.m_Dragging)
        {
            return;
        }
        if (this.m_Dragging)
        {
            Vector3 a = Input.touches[this.m_Id].position;
            Vector3 vector = a - this.m_Center;
            float d = Mathf.Min(vector.magnitude / (this.maxHandleDistance + 0.01f), 1f);
            vector.Normalize();
            vector *= d;
            vector.x *= this.Xsensitivity;
            vector.y *= -1f * this.Ysensitivity;
            this.UpdateVirtualAxes(vector);
            Vector3 localPosition = a - this.m_Center;
            if (localPosition.magnitude > this.maxHandleDistance)
            {
                localPosition = localPosition.normalized * this.maxHandleDistance;
            }
            this.handleImage.transform.localPosition = localPosition;
        }
    }

    public void OnPointerDown(PointerEventData data)
    {
        this.m_Dragging = true;
        this.m_Id = data.pointerId;
        if (this.baseImage != null)
        {
            this.baseImage.enabled = true;
            this.baseImage.transform.position = data.position;
            this.handleImage.enabled = true;
            this.handleImage.transform.position = this.baseImage.transform.position;
        }
        this.m_Center = data.position;
    }

    public void OnPointerUp(PointerEventData data)
    {
        this.m_Dragging = false;
        this.m_Id = -1;
        this.UpdateVirtualAxes(Vector3.zero);
        if (this.baseImage != null)
        {
            this.baseImage.enabled = false;
            this.handleImage.enabled = false;
        }
    }

    private void OnDisable()
    {
        if (CrossPlatformInputManager.AxisExists(this.horizontalAxisName))
        {
            CrossPlatformInputManager.UnRegisterVirtualAxis(this.horizontalAxisName);
        }
        if (CrossPlatformInputManager.AxisExists(this.verticalAxisName))
        {
            CrossPlatformInputManager.UnRegisterVirtualAxis(this.verticalAxisName);
        }
    }

    public AirplaneTouchControl.AxisOption axesToUse;

    public string horizontalAxisName = "Horizontal";

    public string verticalAxisName = "Vertical";

    public float Xsensitivity = 1f;

    public float Ysensitivity = 1f;

    [Header("Virtual joystick base to indicate steering center.")]
    public Image baseImage;

    [Header("Virtual joystick handle to indicate steering direction.")]
    public Image handleImage;

    [Header("How far can the handle move from the center of the base image.")]
    public float maxHandleDistance = 100f;

    private Vector3 m_StartPos;

    private Vector2 m_PreviousDelta;

    private Vector3 m_JoytickOutput;

    private bool m_UseX;

    private bool m_UseY;

    private CrossPlatformInputManager.VirtualAxis m_HorizontalVirtualAxis;

    private CrossPlatformInputManager.VirtualAxis m_VerticalVirtualAxis;

    private bool m_Dragging;

    private int m_Id = -1;

    private Vector3 m_Center;

    public enum AxisOption
    {
        Both,
        OnlyHorizontal,
        OnlyVertical
    }
}

}

Vector3 a = Input.touches[this.m_Id].position;

The value this.m_Id is higher than the bounds of the array Input.touches if it was a list you could use

Vector3 a = Input.touches[Input.touches.IndexOf(this.m_Id)].position;

but can’t do that with an array…