BerkinAkkaya

Painting System for Unity

Oct 12th, 2018
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.98 KB | None | 0 0
  1. using UnityEngine;
  2.  
  3. public class Draw : MonoBehaviour {
  4.  
  5.     [SerializeField] Sprite brush;
  6.     [SerializeField] float brushRadius = 0.75f;
  7.     [SerializeField] float eraserRadius = 0.37f;
  8.     [SerializeField] Color color;
  9.     Vector2 mouse;
  10.    
  11.     #region Start
  12.     void Start(){
  13.         CreateCursor();
  14.     }
  15.     #endregion
  16.     #region Update
  17.     void Update(){
  18.         mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
  19.         ChangeCursor();
  20.  
  21.         if(Input.GetMouseButton(0)) CreateStroke();
  22.         if(Input.GetMouseButton(1)) Erase();
  23.         if(Input.GetKeyDown(KeyCode.Escape)) Clear();
  24.     }
  25.     #endregion
  26.     #region Create Brush Stroke
  27.     void CreateStroke(){
  28.         Transform stroke = new GameObject("Stroke").transform;
  29.         stroke.position = mouse;
  30.         stroke.localScale = brushRadius * Vector2.one;
  31.         stroke.SetParent(transform);
  32.  
  33.         SpriteRenderer renderer = stroke.gameObject.AddComponent<SpriteRenderer>();
  34.         renderer.sprite = brush;
  35.         renderer.color = color;
  36.     }
  37.     #endregion
  38.     #region Clear
  39.     void Clear(){
  40.         foreach(Transform child in transform)
  41.         {
  42.             if(child != transform)
  43.             {
  44.                 Destroy(child.gameObject);
  45.             }
  46.         }
  47.     }
  48.     #endregion
  49.     #region Erase
  50.     void Erase(){
  51.         Vector2 EraserX = new Vector2(mouse.x + eraserRadius, mouse.x - eraserRadius);
  52.         Vector2 EraserY = new Vector2(mouse.y + eraserRadius, mouse.y - eraserRadius);
  53.  
  54.         foreach(Transform child in transform)
  55.         {
  56.             Vector2 pos = child.position;
  57.  
  58.             bool x = (EraserX.y < pos.x) && (pos.x < EraserX.x);
  59.             bool y = (EraserY.y < pos.y) && (pos.y < EraserY.x);
  60.  
  61.             if(x && y) Destroy(child.gameObject);
  62.         }
  63.     }
  64.     #endregion
  65.     #region Set Cursor
  66.     void CreateCursor(){
  67.         GameObject cursor = new GameObject("Cursor");
  68.         SpriteRenderer renderer = cursor.AddComponent<SpriteRenderer>();
  69.         renderer.sprite = brush;
  70.         renderer.sortingOrder = 1;
  71.     }
  72.  
  73.     void ChangeCursor()
  74.     {
  75.         Cursor.visible = false;
  76.         GameObject cursor = GameObject.Find("Cursor");
  77.        
  78.         cursor.transform.position = mouse;
  79.         cursor.transform.localScale = brushRadius * Vector2.one;
  80.     }
  81.     #endregion
  82. }
Advertisement
Add Comment
Please, Sign In to add comment