How to get touch input to follow a prefab.
Hello, I am making an app where you are able to draw and to do so I have a draw code and a follow camera code where the code follows the mouse position so when I click there it creates a new line and does not connect to a the previously drawn line. This works when I run on my computer, but when I run it on my phone the lines get connected together and you do not have separate lines/drawings. I'm new to unity and don't really know what to do. I think the problem is in the follow code it uses the mouse position but I need it to work for the phone. I am not sure what to do and need some help, the code is as follows --
Draw code:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class Draw : MonoBehaviour {
public GameObject drawPreFab;
GameObject theTrail;
Plane planeObject;
Vector3 startPos;
bool dr = false;
[SerializeField] private Transform parentTransform;
// Start is called before the first frame update
void Start()
{
planeObject = new Plane(Camera.main.transform.forward * -1, this.transform.position);
}
// Update is called once per frame
void Update()
{
dr = ClickExample.testBool;
if (dr == true)
{
if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began || Input.GetMouseButtonDown(0))
{
theTrail = (GameObject)Instantiate(drawPreFab, this.transform.position, Quaternion.identity, parentTransform);
Debug.Log("theTrail instant");
Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
float _dis;
if (planeObject.Raycast(mouseRay, out _dis))
{
startPos = mouseRay.GetPoint(_dis);
}
}
else if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved || Input.GetMouseButton(0))
{
Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition);
float _dis;
if (planeObject.Raycast(mouseRay, out _dis))
{
theTrail.transform.position = mouseRay.GetPoint(_dis);
}
}
} else
{
if(ClickClear.flippedBool == true)
{
ClickClear.flippedBool = false;
Delete();
}
}
}
void Delete()
{
Debug.Log("DELETE CALLED");
Debug.Log(parentTransform.childCount);
//Destroy all children
for (int i = 0; i < parentTransform.childCount; i++)
{
Destroy(parentTransform.GetChild(i).gameObject);
}
}
}
Follow Camera code:
using System.Collections; using System.Collections.Generic; using UnityEngine;
public class FollowCamera : MonoBehaviour {
// Update is called once per frame
void Update()
{
Vector3 temp = Input.mousePosition;
temp.z = 10f;
this.transform.position = Camera.main.ScreenToWorldPoint(temp);
}
}
As stated before I think the problem is Vector3 temp = Input.mousePosition but I need a touch position and I am not sure how to get that.
Thank you