SHARE
TWEET

TileTextureManager.cs

a guest Aug 22nd, 2014 38 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using UnityEngine;
  2. using System.Collections;
  3.  
  4. public class TileTextureManager : MonoBehaviour {
  5.  
  6.         // Sprites to use
  7.         public Sprite fullBlock;
  8.         public Sprite straightBlock;
  9.         public Sprite endBlock;
  10.         public Sprite emptyBlock;
  11.         public Sprite cornerBlock;
  12.         public Sprite tBlock;
  13.  
  14.         // Occupied sides
  15.         private bool top = false;
  16.         private bool bottom = false;
  17.         private bool left = false;
  18.         private bool right = false;
  19.  
  20.         // Other
  21.         public float blockSize;
  22.         public string Tag;
  23.         public int layerToMask = 8;
  24.  
  25.         // Initialization
  26.         void Start ()
  27.         {
  28.                 blockSize /= 1.5f;
  29.  
  30.                 int layerMask = ~(1 << layerToMask);
  31.  
  32.                 // Find objects
  33.                 RaycastHit2D topHit = Physics2D.Raycast (transform.position + Vector3.up * blockSize,
  34.                                                          Vector2.up, blockSize, layerMask);
  35.                 RaycastHit2D bottomHit = Physics2D.Raycast (transform.position + -Vector3.up * blockSize,
  36.                                                             -Vector2.up, blockSize, layerMask);
  37.                 RaycastHit2D leftHit = Physics2D.Raycast (transform.position + -Vector3.right * blockSize,
  38.                                                           -Vector2.right, blockSize, layerMask);
  39.                 RaycastHit2D rightHit = Physics2D.Raycast (transform.position + Vector3.right * blockSize,
  40.                                                            Vector2.right, blockSize, layerMask);
  41.  
  42.                 // Determine what was found
  43.                 if (topHit.collider != null)
  44.                         if (topHit.collider.tag == Tag)
  45.                                 top = true;
  46.                 if (bottomHit.collider != null)
  47.                         if (bottomHit.collider.tag == Tag)
  48.                                 bottom = true;
  49.                 if (leftHit.collider != null)
  50.                         if (leftHit.collider.tag == Tag)
  51.                                 left = true;
  52.                 if (rightHit.collider != null)
  53.                         if (rightHit.collider.tag == Tag)
  54.                                 right = true;
  55.  
  56.                 SpriteRenderer renderer = GetComponent<SpriteRenderer> ();
  57.  
  58.                 // Change sprite to fit based on found objects
  59.                 if (top)
  60.                 {
  61.                         if (bottom)
  62.                         {
  63.                                 if (left)
  64.                                 {
  65.                                         if (right)
  66.                                         {
  67.                                                 // All sides occupied
  68.                                                 renderer.sprite = emptyBlock;
  69.                                         }
  70.                                         else
  71.                                         {
  72.                                                 // Top, bottom, left, occupied
  73.                                                 renderer.sprite = tBlock;
  74.                                                 transform.Rotate (new Vector3 (0, 0, 90));
  75.                                         }
  76.                                 }
  77.                                 else if (right)
  78.                                 {
  79.                                         // Top, bottom, right occupied
  80.                                         renderer.sprite = tBlock;
  81.                                         transform.Rotate (new Vector3 (0, 0, -90));
  82.                                 }
  83.                                 else
  84.                                 {
  85.                                         // Top, bottom occupied
  86.                                         renderer.sprite = straightBlock;
  87.                                         transform.Rotate (new Vector3 (0, 0, 90));
  88.                                 }
  89.                         }
  90.                         else if (left)
  91.                         {
  92.                                 if (right)
  93.                                 {
  94.                                         renderer.sprite = tBlock;
  95.                                 }
  96.                                 else
  97.                                 {
  98.                                         renderer.sprite = cornerBlock;
  99.                                 }
  100.                         }
  101.                         else if (right)
  102.                         {
  103.                                 // Top, right occupied
  104.                                 renderer.sprite = cornerBlock;
  105.                                 transform.Rotate (new Vector3 (0, 0, -90));
  106.                         }
  107.                         else
  108.                         {
  109.                                 // Top occupied
  110.                                 renderer.sprite = endBlock;
  111.                                 transform.Rotate (new Vector3 (0, 0, -90));
  112.                         }
  113.                 }
  114.                 else if (bottom)
  115.                 {
  116.                         if (left)
  117.                         {
  118.                                 if (right)
  119.                                 {
  120.                                         // Bottom, left, right occupied
  121.                                         renderer.sprite = tBlock;
  122.                                         transform.Rotate (new Vector3 (0, 0, 180));
  123.                                 }
  124.                                 else
  125.                                 {
  126.                                         // Bottom, left occupied
  127.                                         renderer.sprite = cornerBlock;
  128.                                         transform.Rotate (new Vector3 (0, 0, 90));
  129.                                 }
  130.                         }
  131.                         else if (right)
  132.                         {
  133.                                 // Bottom, right occupied
  134.                                 renderer.sprite = cornerBlock;
  135.                                 transform.Rotate (new Vector3 (0, 0, 180));
  136.                         }
  137.                         else
  138.                         {
  139.                                 // Bottom occupied
  140.                                 renderer.sprite = endBlock;
  141.                                 transform.Rotate (new Vector3 (0, 0, 90));
  142.                         }
  143.                 }
  144.                 else if (left)
  145.                 {
  146.                         if (right)
  147.                         {
  148.                                 // Left, right occupied
  149.                                 renderer.sprite = straightBlock;
  150.                         }
  151.                         else
  152.                         {
  153.                                 // Left occupied
  154.                                 renderer.sprite = endBlock;
  155.                         }
  156.                 }
  157.                 else if (right)
  158.                 {
  159.                         // Right occupied
  160.                         renderer.sprite = endBlock;
  161.                         transform.Rotate (new Vector3 (0, 0, 180));
  162.                 }
  163.                 else
  164.                 {
  165.                         // None occupied
  166.                 }
  167.         }
  168. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
Not a member of Pastebin yet?
Sign Up, it unlocks many cool features!
 
Top