Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- public class Draw : MonoBehaviour {
- [SerializeField] Sprite brush;
- [SerializeField] float brushRadius = 0.75f;
- [SerializeField] float eraserRadius = 0.37f;
- [SerializeField] Color color;
- Vector2 mouse;
- #region Start
- void Start(){
- CreateCursor();
- }
- #endregion
- #region Update
- void Update(){
- mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
- ChangeCursor();
- if(Input.GetMouseButton(0)) CreateStroke();
- if(Input.GetMouseButton(1)) Erase();
- if(Input.GetKeyDown(KeyCode.Escape)) Clear();
- }
- #endregion
- #region Create Brush Stroke
- void CreateStroke(){
- Transform stroke = new GameObject("Stroke").transform;
- stroke.position = mouse;
- stroke.localScale = brushRadius * Vector2.one;
- stroke.SetParent(transform);
- SpriteRenderer renderer = stroke.gameObject.AddComponent<SpriteRenderer>();
- renderer.sprite = brush;
- renderer.color = color;
- }
- #endregion
- #region Clear
- void Clear(){
- foreach(Transform child in transform)
- {
- if(child != transform)
- {
- Destroy(child.gameObject);
- }
- }
- }
- #endregion
- #region Erase
- void Erase(){
- Vector2 EraserX = new Vector2(mouse.x + eraserRadius, mouse.x - eraserRadius);
- Vector2 EraserY = new Vector2(mouse.y + eraserRadius, mouse.y - eraserRadius);
- foreach(Transform child in transform)
- {
- Vector2 pos = child.position;
- bool x = (EraserX.y < pos.x) && (pos.x < EraserX.x);
- bool y = (EraserY.y < pos.y) && (pos.y < EraserY.x);
- if(x && y) Destroy(child.gameObject);
- }
- }
- #endregion
- #region Set Cursor
- void CreateCursor(){
- GameObject cursor = new GameObject("Cursor");
- SpriteRenderer renderer = cursor.AddComponent<SpriteRenderer>();
- renderer.sprite = brush;
- renderer.sortingOrder = 1;
- }
- void ChangeCursor()
- {
- Cursor.visible = false;
- GameObject cursor = GameObject.Find("Cursor");
- cursor.transform.position = mouse;
- cursor.transform.localScale = brushRadius * Vector2.one;
- }
- #endregion
- }
Advertisement
Add Comment
Please, Sign In to add comment