Lean Common+ is a lightweight collection of scripts and media used by all Lean+ assets.
Here's a list of all my other assets, please check them out!
You can also view this list on my Asset Store page.
Lean GUI is a colllection of components that extend Unity's GUI system, allowing you to rapidly enhance the user experience (UX) of your game's UI.
Quickly polish your games using Lean Transition. This asset allows you to easily tween or animate almost anything in your game, making it transition smoothly.
Paint all your objects using Paint in 3D - both in game, and in editor. All features are optimized with GPU accelerated texture painting, so you can enjoy consistent performance, even if you paint your objects one million times!
Quickly optimize the performance of your games using Lean Pool. Within minutes you can use this lightweight asset to preload, recycle, and limit the spawning of your prefabs.
Quickly make the space scene of your dreams using Space Graphics Toolkit. This huge collection of space effects can be customized and combined in any way you like, allowing you to quickly make realistic or fantasy worlds. Each feature has been heavily optimized to run on almost any device and platform.
Rapidly develop your game with consistent input across desktop & mobile using Lean Touch. This lightweight asset comes with many modular components, allowing you to customize them to your exact project needs!
Lean Localization is a localization library that's designed to be as simple to use as possible for both designers, and programmers.
Lean GUI Shapes allows you to quickly add lines, rounded boxes, polygons, and much more to your GUI!
Unlock the full potential of your 2D games using Destructible 2D, this asset allows you to quickly convert all your boring solid sprites into fully destructible ones!
This pack contains 26 high detail PBR planets, all finished using the powerful planet features of Space Graphics Toolkit (SGT). This is a standalone package, so SGT is not required. You can even use the included features to turn your own planets into beautiful worlds!
Lean Touch+ is an extension to the popular Lean Touch asset, adding many more example scenes.
Unity sounds only emanate from a single point source. This is great for explosions and footsteps, but quite often you need something more advanced. Volumetric Audio is an easy to use package that allows you to define boxes, spheres, capsules, paths, or meshes that sounds can emanate from.
This component causes the current Transform to chase the specified position.
The transform that will be chased.
If Target is set, then this allows you to set the offset in local space.
The world space position that will be followed.
The world space offset that will be followed.
This allows you to control how quickly this Transform moves to the target position.
-1 = Instantly change.
0 = No change.
1 = Slowly change.
10 = Quickly change.
This allows you to control how quickly this Transform linearly moves to the target position.
0 = No linear movement.
1 = One linear position per second.
Ignore Z for 2D?
Should the chase keep updating, even if you haven't called the SetPosition method this frame?
Automatically set the Position value to the transform.position in Start?
This method will override the Position value based on the specified value.
This method will immediately move this Transform to the target position.
This component causes the current Rigidbody to chase the specified position.
This method will override the Position value based on the specified value.
This script allows you to drag this Rigidbody2D in a way that causes it to chase the specified position.
This allows you to control which axes the velocity can apply to.
This method will override the Position value based on the specified value.
This component allows you to constrain the current transform.localPosition or transform.anchoredPosition3D to the specified min/max values.
This component will constrain the current transform.localScale to the specified range.
Should there be a minimum transform.localScale?
The minimum transform.localScale value.
Should there be a maximum transform.localScale?
The maximum transform.localScale value.
This component will constrain the current transform.position to the specified axis shape.
The transform the constraint will be applied relative to.
None/null = World space.
The axis that will be constrained.
The minimum position value relative to the current space.
The maximum position value relative to the current space.
This component will constrain the current transform.position to the specified box shape.
The transform the constraint will be applied relative to.
None/null = World space.
The size of the box relative to the current space.
The center of the box relative to the current space.
This component will constrain the current transform.position to the specified collider.
The collider this transform will be constrained to.
This script will constrain the current transform.position to the specified colliders.
The colliders this transform will be constrained to.
This component will constrain the current Transform.rotation values so that its facing direction doesn't deviate too far from the target direction.
This allows you to specify which local direction is considered forward on this GameObject.
Leave this as the default (0,0,1) if you're not sure.
This allows you to specify the target direction you want to constrain to. For example, (0,1,0) is up.
If you want to constrain the direction relative to a Transform, you can specify it here.
This allows you to specify the minimum angle delta between the Forward and Direction vectors in degrees.
This allows you to specify the maximum angle delta between the Forward and Direction vectors in degrees.
This component will constrain the current transform.position to the specified LeanPlane shape.
This component allows you to delay when a value is sent to a component. This is done by first passing the value to this component using one of the SetX/Y/Z methods, and then sending it out after a delay using the OnValueX/Y/Z events.
The set values will be output after this many seconds.
If no position has been set this frame, clear all pending values?
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This method allows you to set the X axis.
This method allows you to set the Y axis.
This method allows you to set the Z axis.
This method allows you to set the XY axis.
This method allows you to set the XYZ axis.
This method will reset the currently pending value and remove all pending delayed values.
This component causes the current Transform to follow the specified trail of positions.
This method will remove all follow positions, and stop movement.
This method adds a new position to the follow path.
This component keeps the current GameObject the specified distance away from its parent.
The direction of the distance separation.
0,0,0 = Use current direction.
The coordinate space for the Direction values.
The distance we want to be from the parent in world space.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
Should the distance value be clamped?
The minimum distance.
The maximum distance.
The layers we should collide against.
The radius of the collision.
This method allows you to increment the Distance value by the specified value.
This method allows you to multiply the Distance value by the specified value.
This component allows you to rotate the current GameObject using events.
If you want this component to work on a different GameObject, then specify it here. This can be used to improve organization if your GameObject already has many components.
This allows you to set the coordinate space the rotation will use.
The first rotation axis, used when calling RotateA or RotateAB.
The second rotation axis, used when calling RotateB or RotateAB.
The rotation angle is multiplied by this.
1 = Normal rotation.
2 = Double rotation.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
If you enable this then the rotation will be multiplied by Time.deltaTime. This allows you to maintain framerate independent rotation.
If you call the ResetRotation method, the rotation will be set to this Euler rotation.
This method will reset the rotation to the specified DefaultRotation value.
This method will cause the rotation to immediately snap to its final value.
This method will clear the target rotation value, causing the rotation to stop.
This method allows you to rotate around AxisA, with the specified angle in degrees.
This method allows you to rotate around AxisB, with the specified angle in degrees.
This method allows you to rotate around AxisA and AxisB, with the specified angles in degrees.
This component allows you to translate the specified GameObject when you call methods like TranslateA, which can be done from events.
If you want this component to work on a different GameObject, then specify it here. This can be used to improve organization if your GameObject already has many components.
This allows you to set the coordinate space the translation will use.
The first translation direction, used when calling TranslateA or TranslateAB.
The first second direction, used when calling TranslateB or TranslateAB.
The translation distance is multiplied by this.
1 = Normal distance.
2 = Double distance.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
If you enable this then the translation will be multiplied by Time.deltaTime. This allows you to maintain frame rate independent movement.
If you call the ResetPosition method, the position will be set to this.
This method will reset the position to the specified DefaultPosition value.
This method will cause the position to immediately snap to its final value.
This method allows you to translate along DirectionA, with the specified multiplier.
This method allows you to translate along DirectionB, with the specified multiplier.
This method allows you to translate along DirectionA and DirectionB, with the specified multipliers.
This method allows you to translate along the specified vector in local space.
This method allows you to translate along the specified vector in world space.
This component allows you to translate the specified Rigidbody when you call methods like TranslateA, which can be done from events.
If you want this component to work on a different GameObject, then specify it here. This can be used to improve organization if your GameObject already has many components.
This allows you to set the coordinate space the translation will use.
The first translation direction, used when calling TranslateA or TranslateAB.
The first second direction, used when calling TranslateB or TranslateAB.
The translation distance is multiplied by this.
1 = Normal distance.
2 = Double distance.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
This allows you to control how much momenum is retained when the dragging fingers are all released.
If you enable this then the translation will be multiplied by Time.deltaTime. This allows you to maintain framerate independent movement.
This method allows you to translate along DirectionA, with the specified multiplier.
This method allows you to translate along DirectionB, with the specified multiplier.
This method allows you to translate along DirectionA and DirectionB, with the specified multipliers.
This method allows you to translate along the specified vector in local space.
This method allows you to translate along the specified vector in world space.
This component allows you to translate the specified Rigidbody2D when you call methods like TranslateA, which can be done from events.
If you want this component to work on a different GameObject, then specify it here. This can be used to improve organization if your GameObject already has many components.
This allows you to set the coordinate space the translation will use.
The first translation direction, used when calling TranslateA or TranslateAB.
The first second direction, used when calling TranslateB or TranslateAB.
The translation distance is multiplied by this.
1 = Normal distance.
2 = Double distance.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
If you enable this then the translation will be multiplied by Time.deltaTime. This allows you to maintain framerate independent movement.
This method allows you to translate along DirectionA, with the specified multiplier.
This method allows you to translate along DirectionB, with the specified multiplier.
This method allows you to translate along DirectionA and DirectionB, with the specified multipliers.
This method allows you to translate along the specified vector in local space.
This method allows you to translate along the specified vector in world space.
This component controls the current GameObject's rotation, based on the specified Pitch and Yaw values.
If you want the rotation to be scaled by the camera FOV, then set the camera here.
The camera will orbit around this point.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
Pitch of the rotation in degrees.
The strength of the pitch changes with vertical finger movement.
Yaw of the rotation in degrees.
The strength of the yaw changes with horizontal finger movement.
This component controls the current GameObject's rotation, based on the specified Pitch and Yaw values.
If you want the rotation to be scaled by the camera FOV, then set the camera here.
This allows you to set the Pitch andYaw rotation value when calling the ResetRotation method.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
Pitch of the rotation in degrees.
The strength of the pitch changes with vertical finger movement.
Limit the pitch to min/max?
The minimum pitch angle in degrees.
The maximum pitch angle in degrees.
Yaw of the rotation in degrees.
The strength of the yaw changes with horizontal finger movement.
Limit the yaw to min/max?
The minimum yaw angle in degrees.
The maximum yaw angle in degrees.
This method resets the Pitch and Yaw values to the DefaultRotation value.
This method will automatically update the Pitch and Yaw values based on the specified position in world space.
This method will automatically update the Pitch and Yaw values based on the specified direction in world space.
This method will automatically update the Pitch and Yaw values based on the specified position in screen space.
This component adds auto Yaw rotation to the attached LeanPitchYaw component.
The amount of seconds until auto rotation begins after no touches.
The speed of the yaw changes.
The speed the auto rotation goes from 0% to 100%.
This script will record the state of the current transform, and revert it on command.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
This component automatically rotates the current GameObject based on movement.
The Transform that will be rotated.
None/Null = This GameObject's Transform.
This allows you choose the method used to calculate the position we will rotate toward.
PreviousPosition = This component will automatically calculate positions based on the Transform.position.
ManuallySetPosition = You must manually call the SetPosition method to update the rotation.
This allows you to set the minimum amount of movement required to trigger the rotation to update. This is useful to prevent tiny movements from causing the rotation to change unexpectedly.
If you enable this the rotation will be reversed.
This allows you choose the method used to find the target rotation.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
If Position is set to ManuallySetPosition, then this method allows you to set the position we will rotate to.
This method allows you to override the position delta used to calculate the rotation.
If your Transform has teleported, then call this to reset the cached position.
This component automatically rotates the current Rigidbody2D based on movement.
If you want this component to change smoothly over time, then this allows you to control how quick the changes reach their target value.
-1 = Instantly change.
1 = Slowly change.
10 = Quickly change.
This component allows you to smooth a value that is sent to a component. This is done by first passing the value to this component using one of the SetX/Y/Z methods, and then sending it out after smoothing using the OnValueX/Y/Z events.
This allows you to control how quickly the target value is reached.
Damping alone won't reach the target value. This setting allows you to force the value to move toward the target with linear interpolation.
If the target value has been reached, stop sending events?
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This event will send any previously set values after the specified delay.
This method allows you to set the X axis.
This method allows you to set the Y axis.
This method allows you to set the Z axis.
This method allows you to set the XY axis.
This method allows you to set the XYZ axis.
This method will immediately snap the current value to the target value.
This method will reset the target value and stop sending any events.
This component allows you to spawn a prefab at a point, and have it thrown toward the target.
The prefab that gets spawned.
When calling Spawn, this allows you to specify the spawned velocity.
This component will swap the target GameObject with one of the specified prefabs when swiping.
The current index within the Prefabs list.
The alternative prefabs that can be swapped to.
This method forces the swap to update if it's been modified.
This method allows you to swap to the specified index.
This method allows you to swap to the previous index.
This method allows you to swap to the next index.
This component allows you to accumilate delta changes until they reach a threshold delta, and then output them.
This is useful for making more precise movements when using inaccurate touch inputs.
The current accumilated delta.
When any dimension of Current exceeds this, OnDelta___ will be called, and Current will be rolled back.
If you enable this then the delta will step in increments based on the Threshold value. If you disable this then the position will immediately be set to the Current value.
This method allows you to increment Current.
This method allows you to increment Current.
This method allows you to increment Current.x.
This method allows you to increment Current.y.
This method allows you to increment Current.z.
This component allows you to store the Current position. Once this differs from the Previous position by more than the Threshold, the Previous value will change to match Current, and the OnPosition events will fire with the current position.
This is useful for making more precise movements when using inaccurate touch inputs.
The current position.
The previously sent position.
When any dimension of Current exceeds this, OnPosition___ will be called, and Current will be rolled back.
If you enable this then the position will step toward the Current value in increments based on the Threshold value. If you disable this then the position will immediately be set to the Current value.
This method allows you to increment Current.
This method allows you to increment Current.
This method allows you to increment Current.x.
This method allows you to increment Current.y.
This method allows you to increment Current.z.
This method allows you to set the Current position.
This method allows you to set the Current position.
Planet Pack - Space Graphics Toolkit
LeanManualTranslateRigidbody2D