void Start() { timeLimit = 1.0f; speed = 2.0f; // Get the 'size' of the mole sprite Bounds bounds = sprite.GetUntrimmedBounds(); height = bounds.max.y - bounds.min.y; // We want the mole to be fully clipped on the Y axis initially. spriteRec = sprite.ClipRect; spriteRec.y = 1.0f; sprite.ClipRect = spriteRec; colliderTransform = sprite.transform; //Move the mole sprite into the correct place relative to the hole Vector3 localPos = sprite.transform.localPosition; transformY = localPos.y; localPos.y = transformY - (height * sprite.ClipRect.y); sprite.transform.localPosition = localPos; sprite.gameObject.SetActive(false); // Add mole to the main game script's mole container MainGameScript.Instance.RegisterMole(this); }
void Start() { _downVelocity = new Vector3(0, -175, 0); _defaultPositon = new Vector3(320, 0, 0); _defaultPositionTop = new Vector3(320, 1135, 0); // Get the 'size' of the line segment. Bounds bounds = sprite.GetUntrimmedBounds(); width = bounds.max.x - bounds.min.x; // We want the segment to be mostly clipped on the left and right sides initially. spriteRec = sprite.ClipRect; spriteRec.x = xMin; widthMin = (0.5f - xMin) * 2; spriteRec.width = widthMin; sprite.ClipRect = spriteRec; colliderTransform = sprite.transform; // Register Segment with the main game script. MainGameScript.Instance.RegisterSegment(this); sprite.renderer.enabled = false; }
public new void OnSceneGUI() { if (tk2dPreferences.inst.enableSpriteHandles == false || !tk2dEditorUtility.IsEditable(target)) { return; } tk2dClippedSprite spr = (tk2dClippedSprite)target; var sprite = spr.CurrentSprite; if (sprite == null) { return; } Transform t = spr.transform; Bounds b = spr.GetUntrimmedBounds(); Rect localRect = new Rect(b.min.x, b.min.y, b.size.x, b.size.y); Rect clipRect = new Rect(b.min.x + b.size.x * ((spr.scale.x > 0) ? spr.clipBottomLeft.x : (1.0f - spr.clipTopRight.x)), b.min.y + b.size.y * ((spr.scale.y > 0) ? spr.clipBottomLeft.y : (1.0f - spr.clipTopRight.y)), b.size.x * spr.ClipRect.width, b.size.y * spr.ClipRect.height); // Draw rect outline Handles.color = new Color(1, 1, 1, 0.5f); tk2dSceneHelper.DrawRect(localRect, t); // Clip region outline (if editing) if (showSceneClipControl) { Handles.color = new Color(1, 0, 0, 0.5f); tk2dSceneHelper.DrawRect(clipRect, t); } Handles.BeginGUI(); if (!showSceneClipControl) { // Do the normal resize and rotate controls if (tk2dSceneHelper.RectControlsToggle()) { EditorGUI.BeginChangeCheck(); Rect resizeRect = tk2dSceneHelper.RectControl(102030, localRect, t); if (EditorGUI.EndChangeCheck()) { tk2dUndo.RecordObjects(new Object[] { t, spr }, "Resize"); spr.ReshapeBounds(new Vector3(resizeRect.xMin, resizeRect.yMin) - new Vector3(localRect.xMin, localRect.yMin), new Vector3(resizeRect.xMax, resizeRect.yMax) - new Vector3(localRect.xMax, localRect.yMax)); EditorUtility.SetDirty(spr); } } // Rotate handles if (!tk2dSceneHelper.RectControlsToggle()) { EditorGUI.BeginChangeCheck(); float theta = tk2dSceneHelper.RectRotateControl(405060, localRect, t, new List <int>()); if (EditorGUI.EndChangeCheck()) { if (Mathf.Abs(theta) > Mathf.Epsilon) { tk2dUndo.RecordObject(t, "Rotate"); t.Rotate(t.forward, theta, Space.World); } } } } else { // Clip region control EditorGUI.BeginChangeCheck(); Rect resizeRect = tk2dSceneHelper.RectControl(708090, clipRect, t); if (EditorGUI.EndChangeCheck()) { Rect newSprClipRect = new Rect(((spr.scale.x > 0) ? (resizeRect.xMin - localRect.xMin) : (localRect.xMax - resizeRect.xMax)) / localRect.width, ((spr.scale.y > 0) ? (resizeRect.yMin - localRect.yMin) : (localRect.yMax - resizeRect.yMax)) / localRect.height, resizeRect.width / localRect.width, resizeRect.height / localRect.height); if (newSprClipRect != spr.ClipRect) { tk2dUndo.RecordObject(spr, "Resize"); spr.ClipRect = newSprClipRect; EditorUtility.SetDirty(spr); } } } Handles.EndGUI(); // Sprite selecting tk2dSceneHelper.HandleSelectSprites(); // Move targeted sprites tk2dSceneHelper.HandleMoveSprites(t, localRect); if (GUI.changed) { EditorUtility.SetDirty(target); } }
public new void OnSceneGUI() { if (tk2dPreferences.inst.enableSpriteHandles == false) { return; } tk2dClippedSprite spr = (tk2dClippedSprite)target; var sprite = spr.CurrentSprite; if (sprite == null) { return; } Transform t = spr.transform; Bounds b = spr.GetUntrimmedBounds(); Rect localRect = new Rect(b.min.x, b.min.y, b.size.x, b.size.y); Rect clipRect = new Rect(b.min.x + b.size.x * spr.clipBottomLeft.x, b.min.y + b.size.y * spr.clipBottomLeft.y, b.size.x * spr.ClipRect.width, b.size.y * spr.ClipRect.height); Vector3 unscaledBoundsSize = sprite.untrimmedBoundsData[1]; // Draw rect outline Handles.color = new Color(1, 1, 1, 0.5f); tk2dSceneHelper.DrawRect(localRect, t); // Clip region outline (if editing) if (showSceneClipControl) { Handles.color = new Color(1, 0, 0, 0.5f); tk2dSceneHelper.DrawRect(clipRect, t); } Handles.BeginGUI(); if (!showSceneClipControl) { // Do the normal resize and rotate controls if (tk2dSceneHelper.RectControlsToggle()) { EditorGUI.BeginChangeCheck(); Rect resizeRect = tk2dSceneHelper.RectControl(102030, localRect, t); if (EditorGUI.EndChangeCheck()) { Vector3 newScale = new Vector3(resizeRect.width / unscaledBoundsSize.x, resizeRect.height / unscaledBoundsSize.y, spr.scale.z); if (newScale != spr.scale) { Undo.RegisterUndo(new Object[] { t, spr }, "Resize"); float factorX = (Mathf.Abs(spr.scale.x) > Mathf.Epsilon) ? (newScale.x / spr.scale.x) : 0.0f; float factorY = (Mathf.Abs(spr.scale.y) > Mathf.Epsilon) ? (newScale.y / spr.scale.y) : 0.0f; Vector3 offset = new Vector3(resizeRect.xMin - localRect.xMin * factorX, resizeRect.yMin - localRect.yMin * factorY, 0.0f); Vector3 newPosition = t.TransformPoint(offset); if (newPosition != t.position) { t.position = newPosition; } spr.scale = newScale; EditorUtility.SetDirty(spr); } } } // Rotate handles if (!tk2dSceneHelper.RectControlsToggle()) { EditorGUI.BeginChangeCheck(); float theta = tk2dSceneHelper.RectRotateControl(405060, localRect, t, new List <int>()); if (EditorGUI.EndChangeCheck()) { Undo.RegisterUndo(t, "Rotate"); if (Mathf.Abs(theta) > Mathf.Epsilon) { t.Rotate(t.forward, theta); } } } } else { // Clip region control EditorGUI.BeginChangeCheck(); Rect resizeRect = tk2dSceneHelper.RectControl(708090, clipRect, t); if (EditorGUI.EndChangeCheck()) { Rect newSprClipRect = new Rect((resizeRect.xMin - localRect.xMin) / localRect.width, (resizeRect.yMin - localRect.yMin) / localRect.height, resizeRect.width / localRect.width, resizeRect.height / localRect.height); if (newSprClipRect != spr.ClipRect) { Undo.RegisterUndo(spr, "Resize"); spr.ClipRect = newSprClipRect; EditorUtility.SetDirty(spr); } } } Handles.EndGUI(); // Sprite selecting tk2dSceneHelper.HandleSelectSprites(); // Move targeted sprites tk2dSceneHelper.HandleMoveSprites(t, localRect); }