- Home /
Question by
$$anonymous$$ · Mar 06, 2015 at 06:24 PM ·
guiselection
Selection box - drawing corner issue.
Hello! So im trying to select objects with my selection box. The drawing part runs perfecly,but selection is not happening, if selection box wasnt drawn from an upper right corner.
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using RTS;
public class testSelectionBox : MonoBehaviour {
public Texture2D texture;
bool draw;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update()
{
if (Input.GetMouseButtonDown(0))
{
draw = true;
rect = new Rect(Input.mousePosition.x, -(Input.mousePosition.y - Screen.height), 100, 100);
}
}
if (Input.GetMouseButtonUp(0))
{
for (int i = 0; i < ResourceManager.playerUnits.Count; i++)
{
if (rect.Contains(WorldToGuiPoint(ResourceManager.playerUnits[i].transform.position)))
{
Debug.Log(playerUnits[i].name);
}
}
draw = false;
}
if (Input.GetMouseButton(0) && draw)
{
rect.xMax = Input.mousePosition.x;
rect.yMax = Screen.height-Input.mousePosition.y;
}
Debug.Log(rect);
}
void OnGUI()
{
if (draw)
{
GUI.DrawTexture(rect, texture);
}
}
public Vector3 WorldToGuiPoint(Vector3 position)
{
Vector3 guiPosition = Camera.main.WorldToScreenPoint(position);
guiPosition.y = Screen.height - guiPosition.y;
return guiPosition;
}
}
Comment
Best Answer
Answer by $$anonymous$$ · Mar 06, 2015 at 08:48 PM
Fixed by using
Rect selectionBox = new Rect(Mathf.Min(startingCursorPos.x, currentCursorPos.x), Mathf.Min(startingCursorPos.y, currentCursorPos.y),
Mathf.Abs(startingCursorPos.x - currentCursorPos.x),
Mathf.Abs(startingCursorPos.y - currentCursorPos.y));
Thanks to http://answers.unity3d.com/questions/168680/selecting-objects-inside-a-box-part2.html.
Your answer
Follow this Question
Related Questions
How To Drag Something From GUI - To Scene - Help 2 Answers
How do disable uGUI/EventSystem selection feature? 0 Answers
Saving selections across multiple menus? 1 Answer
GUI is too sensitive 1 Answer