// ----------------------------- // public api // ----------------------------- #region publicAPI #endregion // ----------------------------- // private api // ----------------------------- #region privateAPI Vector3 getCenterPos(List <SpritePoint> pointList) { float counter = 0.0f; Vector3 returnValue = Vector3.zero; foreach (SpritePoint point in pointList) { returnValue += spriteDeformerAnimation.SpritePositionToGlobal(point.spritePosition + point.offset2d); counter += 1.0f; } return(returnValue / counter); }
void Update() { transform.position = (Vector2)Camera.main.ScreenToWorldPoint(Input.mousePosition); for (int i = 0; i < footPoints.Count; i++) { var point = footPoints[i]; Vector2 footGlobalPos = spriteDeformerAnimation.SpritePositionToGlobal(point.spritePosition); Vector2 orign = new Vector2(footGlobalPos.x, transform.position.y); RaycastHit2D hit = Physics2D.Raycast(orign, -Vector2.up); if (hit.collider != null) { Vector2 newOffset = spriteDeformerAnimation.GlobalPositionToSpritePosition(hit.point + hitOffset) - point.spritePosition; point.offset2d = newOffset; spriteDeformerAnimation.dirty_offset = true; } } }