- Home /
Question by
Salokcin · May 04, 2014 at 10:58 PM ·
line rendererray cast
Line Renderering Issue
Hello, I am trying to create a game where the user will be able to use their mouse to draw lines anywhere on the screen. I also have objects falling from above with the idea that if an object hits an object the object gets destroyed. I have used a line renderer to create a line and I thought I'd use ray casting to detect an object being hit. This doesn't seem to be working like I want it to though. Where am I going wrong?
using UnityEngine; using System.Collections;
public class FollowMouse : MonoBehaviour {
private LineRenderer LR;
public bool drawLine = false;
public Vector2 origin;
public Vector2 destination;
GameObject camera;
void Start () {
// Grab Line Render object
LR = GetComponent<LineRenderer>();
// Width of line.
LR.SetWidth(.15f,.15f);
// Cache Camera
camera = GameObject.FindGameObjectWithTag("MainCamera");
}
// Update is called once per frame
void Update () {
// If the left button is pressed down
if(Input.GetMouseButtonDown(0) && !drawLine){
// Capture the mouse origin
Vector3 mouseOrigin = camera.GetComponent<Camera>().ScreenToWorldPoint(Input.mousePosition);
// place mouse origin in a vector.
origin = new Vector2(mouseOrigin.x,mouseOrigin.y);
// Don't capture origin again.
drawLine = !drawLine;
// MAke the line visible.
LR.enabled = true;
}
// Draw the line dynamically
if(drawLine){
DrawLine();
}
// If user lifts button then erase line.
if(Input.GetMouseButtonUp(0)){
//Let the user draw a new line.
drawLine = !drawLine;
// Line is erased
LR.enabled = false;
}
}
void DrawLine(){
// Capture where mouse is dragged to
Vector3 mousepos= camera.GetComponent<Camera>().ScreenToWorldPoint(Input.mousePosition);
destination = new Vector2(mousepos.x,mousepos.y);
// Start line at click
LR.SetPosition(0,origin);
// End line at mouse position
LR.SetPosition(1,destination);
RaycastHit2D ray = Physics2D.Raycast(origin,destination);
if(ray != null){
Debug.Log(ray.ToString);
}
}
}
Comment