|
|
|
using System.Collections;
|
|
|
|
using System.Collections.Generic;
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
|
|
|
|
|
|
public class TestBounds : MonoBehaviour
|
|
|
|
{
|
|
|
|
private SpriteRenderer sprRender;
|
|
|
|
public GameObject Button;
|
|
|
|
public Camera UICamera;
|
|
|
|
|
|
|
|
private Material selectMat;
|
|
|
|
private Material sharedMat;
|
|
|
|
// Start is called before the first frame update
|
|
|
|
void Start()
|
|
|
|
{
|
|
|
|
sprRender = this.GetComponentInChildren<SpriteRenderer>();
|
|
|
|
sharedMat = sprRender.sharedMaterial;
|
|
|
|
selectMat = new Material(Shader.Find("PeachValley/GameObject"));
|
|
|
|
Debug.LogError($"mat same with ori shared:{selectMat == sharedMat }");
|
|
|
|
Debug.LogError($"shared same with mat:{selectMat == sprRender.sharedMaterial }");
|
|
|
|
|
|
|
|
// sprRender.material = sharedMat;
|
|
|
|
//Debug.LogError($"after sharedMat: {sprRender.material == sprRender.sharedMaterial }");
|
|
|
|
Debug.LogError("============");
|
|
|
|
|
|
|
|
//Debug.LogError(sprRender.sprite.border);
|
|
|
|
//Debug.LogError(sprRender.sprite.bounds);
|
|
|
|
//Debug.LogError(sprRender.bounds);
|
|
|
|
|
|
|
|
Bounds bounds = sprRender.sprite.bounds;
|
|
|
|
Vector4 border = sprRender.sprite.border;
|
|
|
|
Vector2 minPos = sprRender.transform.TransformPoint(bounds.center - new Vector3(bounds.extents.x - border.x / sprRender.sprite.pixelsPerUnit, bounds.extents.y - border.y / sprRender.sprite.pixelsPerUnit));
|
|
|
|
Vector2 maxPos = sprRender.transform.TransformPoint(bounds.center + new Vector3(bounds.extents.x - border.z / sprRender.sprite.pixelsPerUnit, bounds.extents.y - border.w / sprRender.sprite.pixelsPerUnit));
|
|
|
|
Vector2 midPos = (minPos + maxPos) / 2;
|
|
|
|
//Debug.LogError("worldPos:" + minPos + "|" + maxPos);
|
|
|
|
|
|
|
|
Vector2 midLeft = new Vector2(minPos.x, midPos.y);
|
|
|
|
//minPos = RectTransformUtility.WorldToScreenPoint(UICamera, minPos);
|
|
|
|
//Debug.LogError("screenPos:" + minPos + "|" + maxPos);
|
|
|
|
// minPos = Canvas.transform.TransformPoint(minPos);
|
|
|
|
//Debug.LogError("uiPos:" + minPos + "|" + maxPos);
|
|
|
|
var trans = Button.GetComponent<RectTransform>();
|
|
|
|
//trans.anchoredPosition = trans.InverseTransformPoint(minPos);
|
|
|
|
trans.position = midLeft;
|
|
|
|
}
|
|
|
|
|
|
|
|
// Update is called once per frame
|
|
|
|
void Update()
|
|
|
|
{
|
|
|
|
if (Input.GetKeyUp(KeyCode.K))
|
|
|
|
{
|
|
|
|
if (sprRender != null)
|
|
|
|
{
|
|
|
|
selectMat.EnableKeyword("_EFFECT_EDGE_ON");
|
|
|
|
sprRender.material = selectMat;
|
|
|
|
if (sprRender.material == selectMat)
|
|
|
|
{
|
|
|
|
Debug.LogError("Same mat");
|
|
|
|
}
|
|
|
|
// sprRender.material.EnableKeyword("_EFFECT_EDGE_ON");
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
if (Input.GetKeyUp(KeyCode.L))
|
|
|
|
{
|
|
|
|
// sprRender.material.DisableKeyword("_EFFECT_EDGE_ON");
|
|
|
|
sprRender.sharedMaterial = sharedMat;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
void OnDrawGizmos()
|
|
|
|
{
|
|
|
|
// sprRender = this.GetComponent<SpriteRenderer>();
|
|
|
|
if (sprRender != null)
|
|
|
|
{
|
|
|
|
Bounds bounds = sprRender.sprite.bounds;
|
|
|
|
Vector4 border = sprRender.sprite.border;
|
|
|
|
Vector2 minPos = sprRender.transform.TransformPoint(bounds.center - new Vector3(bounds.extents.x - border.x/sprRender.sprite.pixelsPerUnit, bounds.extents.y - border.y / sprRender.sprite.pixelsPerUnit));
|
|
|
|
Vector2 maxPos = sprRender.transform.TransformPoint(bounds.center + new Vector3(bounds.extents.x - border.z / sprRender.sprite.pixelsPerUnit, bounds.extents.y - border.w / sprRender.sprite.pixelsPerUnit));
|
|
|
|
Debug.DrawLine(minPos, maxPos);
|
|
|
|
//Vector3 lt = bounds.min + new Vector3(0, bounds.size.y, 0);
|
|
|
|
//Vector3 rb = bounds.max + new Vector3(0, -bounds.size.y, 0);
|
|
|
|
//Debug.DrawLine(bounds.min, lt);
|
|
|
|
//Debug.DrawLine(lt, bounds.max);
|
|
|
|
//Debug.DrawLine(bounds.max, rb);
|
|
|
|
//Debug.DrawLine(bounds.min, rb);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|