Exemplo n.º 1
0
        void UpdateSegments()
        {
            _effective = false;
            if (_segments == null)
                _segments = new PolygonColliderService.Segment[4];

            var from = transform.TransformPoint(CORNERS[3]);
            InitBoundary(from);
            for (var i = 0; i < CORNERS.Length; i++) {
                var to = transform.TransformPoint (CORNERS[i]);
                _segments[i] = PolygonColliderService.Segment.Generate (from, to);
                ExpandBoundary(to);
                from = to;
            }
            _effective = true;
        }
        void UpdateSegment()
        {
            _effective = false;

            if (_spriteRend == null || _spriteRend.sprite == null)
                return;
            if (_outlines == null)
                _outlines = FindOutlines (_spriteRend.sprite.vertices, _spriteRend.sprite.triangles);
            var len = _outlines.Length;
            if (len == 0)
                return;
            if (_segments == null || _segments.Length != len)
                _segments = new PolygonColliderService.Segment[len];

            var sprite = _spriteRend.sprite;
            var vertices = sprite.vertices;
            var t0 = _outlines [0];
            var from = transform.TransformPoint(vertices[t0]);
            InitBoundary (from);
            for (var i = 0; i < len; i++) {
                from = transform.TransformPoint(vertices [t0]);
                var t1 = _outlines[(i+1) % len];
                var to = transform.TransformPoint(vertices[t1]);
                t0 = t1;
                _segments [i] = PolygonColliderService.Segment.Generate (from, to);
                ExpandBoundary(from);
                ExpandBoundary(to);
            }

            _effective = true;
        }