Skip to content

Instantly share code, notes, and snippets.

@baba-s
Created March 15, 2024 02:31
Show Gist options
  • Save baba-s/17a2e4f64f38814c02f7a19dd6523082 to your computer and use it in GitHub Desktop.
Save baba-s/17a2e4f64f38814c02f7a19dd6523082 to your computer and use it in GitHub Desktop.
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
[ExecuteAlways]
public class Example : MonoBehaviour
{
[SerializeField] private SpriteRenderer m_spriteRenderer;
[SerializeField] private LineRenderer[] m_lineRenderers;
private void Update()
{
if ( m_spriteRenderer == null ) return;
if ( m_lineRenderers == null || m_lineRenderers.Length <= 0 ) return;
var sprite = m_spriteRenderer.sprite;
var positionCount = sprite.GetPhysicsShapeCount();
var physicsShape = new List<Vector2>();
for ( var i = 0; i < m_lineRenderers.Length; i++ )
{
var enabled = i < positionCount;
var lineRenderer = m_lineRenderers[ i ];
lineRenderer.enabled = enabled;
if ( !enabled ) continue;
physicsShape.Clear();
sprite.GetPhysicsShape( i, physicsShape );
lineRenderer.positionCount = physicsShape.Count;
lineRenderer.SetPositions( physicsShape.Select( x => transform.TransformPoint( x ) ).ToArray() );
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment