You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
2.7 KiB
60 lines
2.7 KiB
using System.Collections; |
|
using System.Collections.Generic; |
|
using UnityEngine; |
|
|
|
|
|
public class TestBounds : MonoBehaviour |
|
{ |
|
private SpriteRenderer sprRender; |
|
public GameObject Button; |
|
public Camera UICamera; |
|
// Start is called before the first frame update |
|
void Start() |
|
{ |
|
sprRender = this.GetComponentInChildren<SpriteRenderer>(); |
|
//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() |
|
{ |
|
|
|
} |
|
|
|
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); |
|
} |
|
} |
|
}
|
|
|