- Home /
Draw line between two clicked points.
Pretty new to scripting, can't seem to store my first mouse click. Everything else, I'm not too concerned about since I can work through it and probably fix it. Whenever I SetPosition on my two LineRenderer points to define my line, the second one overrides the first one. Not sure how to store my first click, and store it separately from the second click position. Any help is greatly appreciated!
using UnityEngine;
using System.Collections;
public class DrawLineAgain : MonoBehaviour {
public GameObject linez;
private float screenHeight = Screen.height;
private float screenWidth = Screen.width;
private int counter = 0;
void Update () {
if (Input.GetMouseButtonDown (0)) {
counter++;
Vector3 firstClick = new Vector3(Input.mousePosition.x/screenWidth, Input.mousePosition.y/screenHeight, 0);
float firstClickX = firstClick.x;
float firstClickY = firstClick.y;
if(counter == 2){
Instantiate(linez);
LineRenderer newLine = linez.GetComponent<LineRenderer>();
//newLine.SetPosition(0, firstClick);
newLine.SetPosition (0, new Vector3(firstClickX, firstClickY, 0));
newLine.SetPosition(1, new Vector3(Input.mousePosition.x/screenWidth, Input.mousePosition.y/screenHeight, 1));
Debug.Log (counter);
counter = 0;
}
}
}
}
Answer by GregoryNeal · Apr 30, 2015 at 10:42 PM
If you want to store multiple mouse clicks, consider using a list (or an array if you know how many you want to use beforehand). Everytime you click, add the position to the array then when you do the second click, have it read through the array and draw a line between them.
Will try that and post the script in case anyone comes across this issue in the future. Thanks!
Answer by hbalint1 · May 01, 2015 at 10:06 PM
the fast method is tweaking yours. like:
using UnityEngine;
using System.Collections;
public class DrawLineAgain : MonoBehaviour {
public GameObject linez;
private LineRenderer newLine;
private float screenHeight = Screen.height;
private float screenWidth = Screen.width;
private bool firstTouch = true;
private Vector2 firstClick;
void Start()
{
newLine = linez.GetComponent<LineRenderer>();
}
void Update()
{
if (Input.GetMouseButtonDown(0))
{
if (firstTouch)
{
firstClick = new Vector2(Input.mousePosition.x / screenWidth, Input.mousePosition.y / screenHeight);
firstTouch = false;
}
else
{
Vector2 secondClick = new Vector2(Input.mousePosition.x / screenWidth, Input.mousePosition.y / screenHeight);
newLine.SetPosition(0, firstClick);
newLine.SetPosition(1, secondClick);
firstTouch = true;
}
}
}
}