Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using UnityEngine;
- using System.Collections;
- public class TileTextureManager : MonoBehaviour {
- // Sprites to use
- public Sprite fullBlock;
- public Sprite straightBlock;
- public Sprite endBlock;
- public Sprite emptyBlock;
- public Sprite cornerBlock;
- public Sprite tBlock;
- // Occupied sides
- private bool top = false;
- private bool bottom = false;
- private bool left = false;
- private bool right = false;
- // Other
- public float blockSize;
- public string Tag;
- public int layerToMask = 8;
- // Initialization
- void Start ()
- {
- blockSize /= 1.5f;
- int layerMask = ~(1 << layerToMask);
- // Find objects
- RaycastHit2D topHit = Physics2D.Raycast (transform.position + Vector3.up * blockSize,
- Vector2.up, blockSize, layerMask);
- RaycastHit2D bottomHit = Physics2D.Raycast (transform.position + -Vector3.up * blockSize,
- -Vector2.up, blockSize, layerMask);
- RaycastHit2D leftHit = Physics2D.Raycast (transform.position + -Vector3.right * blockSize,
- -Vector2.right, blockSize, layerMask);
- RaycastHit2D rightHit = Physics2D.Raycast (transform.position + Vector3.right * blockSize,
- Vector2.right, blockSize, layerMask);
- // Determine what was found
- if (topHit.collider != null)
- if (topHit.collider.tag == Tag)
- top = true;
- if (bottomHit.collider != null)
- if (bottomHit.collider.tag == Tag)
- bottom = true;
- if (leftHit.collider != null)
- if (leftHit.collider.tag == Tag)
- left = true;
- if (rightHit.collider != null)
- if (rightHit.collider.tag == Tag)
- right = true;
- SpriteRenderer renderer = GetComponent<SpriteRenderer> ();
- // Change sprite to fit based on found objects
- if (top)
- {
- if (bottom)
- {
- if (left)
- {
- if (right)
- {
- // All sides occupied
- renderer.sprite = emptyBlock;
- }
- else
- {
- // Top, bottom, left, occupied
- renderer.sprite = tBlock;
- transform.Rotate (new Vector3 (0, 0, 90));
- }
- }
- else if (right)
- {
- // Top, bottom, right occupied
- renderer.sprite = tBlock;
- transform.Rotate (new Vector3 (0, 0, -90));
- }
- else
- {
- // Top, bottom occupied
- renderer.sprite = straightBlock;
- transform.Rotate (new Vector3 (0, 0, 90));
- }
- }
- else if (left)
- {
- if (right)
- {
- renderer.sprite = tBlock;
- }
- else
- {
- renderer.sprite = cornerBlock;
- }
- }
- else if (right)
- {
- // Top, right occupied
- renderer.sprite = cornerBlock;
- transform.Rotate (new Vector3 (0, 0, -90));
- }
- else
- {
- // Top occupied
- renderer.sprite = endBlock;
- transform.Rotate (new Vector3 (0, 0, -90));
- }
- }
- else if (bottom)
- {
- if (left)
- {
- if (right)
- {
- // Bottom, left, right occupied
- renderer.sprite = tBlock;
- transform.Rotate (new Vector3 (0, 0, 180));
- }
- else
- {
- // Bottom, left occupied
- renderer.sprite = cornerBlock;
- transform.Rotate (new Vector3 (0, 0, 90));
- }
- }
- else if (right)
- {
- // Bottom, right occupied
- renderer.sprite = cornerBlock;
- transform.Rotate (new Vector3 (0, 0, 180));
- }
- else
- {
- // Bottom occupied
- renderer.sprite = endBlock;
- transform.Rotate (new Vector3 (0, 0, 90));
- }
- }
- else if (left)
- {
- if (right)
- {
- // Left, right occupied
- renderer.sprite = straightBlock;
- }
- else
- {
- // Left occupied
- renderer.sprite = endBlock;
- }
- }
- else if (right)
- {
- // Right occupied
- renderer.sprite = endBlock;
- transform.Rotate (new Vector3 (0, 0, 180));
- }
- else
- {
- // None occupied
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement