UnityEditor.Joint2DEditorBase.SnapToSprite C# (CSharp) Method

SnapToSprite() protected static method

protected static SnapToSprite ( SpriteRenderer spriteRenderer, Vector3 position, float snapDistance ) : Vector3
spriteRenderer UnityEngine.SpriteRenderer
position Vector3
snapDistance float
return Vector3
        protected static Vector3 SnapToSprite(SpriteRenderer spriteRenderer, Vector3 position, float snapDistance)
        {
            if (spriteRenderer != null)
            {
                snapDistance = HandleUtility.GetHandleSize(position) * snapDistance;
                float x = spriteRenderer.sprite.bounds.size.x / 2f;
                float y = spriteRenderer.sprite.bounds.size.y / 2f;
                Vector2[] vectorArray = new Vector2[] { new Vector2(-x, -y), new Vector2(0f, -y), new Vector2(x, -y), new Vector2(-x, 0f), new Vector2(0f, 0f), new Vector2(x, 0f), new Vector2(-x, y), new Vector2(0f, y), new Vector2(x, y) };
                foreach (Vector2 vector in vectorArray)
                {
                    Vector3 b = spriteRenderer.transform.TransformPoint((Vector3) vector);
                    if (Vector2.Distance(position, b) <= snapDistance)
                    {
                        return b;
                    }
                }
            }
            return position;
        }

Usage Example

Exemplo n.º 1
0
 private Vector3 SnapToSprites(Vector3 position)
 {
     position = Joint2DEditorBase.SnapToSprite(this.anchorJoint2D.GetComponent <SpriteRenderer>(), position, 0.13f);
     if (this.anchorJoint2D.connectedBody != null)
     {
         position = Joint2DEditorBase.SnapToSprite(this.anchorJoint2D.connectedBody.GetComponent <SpriteRenderer>(), position, 0.13f);
     }
     return(position);
 }