Moon2Module | Plugin that converts your Moon Animator projects into ModuleScripts!

:wave: Introduction

  • Moon2Module is a plugin that can be used to export Moon Animator 2 projects into ModuleScripts! (With some limitations)
  • This plugin was made and monetized with permission from @xsixx

:clipboard: Credits


:warning: Known Issues

  • The exact cause is unknown but some Moon Animator 2 plugins will break Moon2Module.
    – Spotted by @nicogamer12357

:package: Install Moon2Module v3.0 (4.99 USD) [REQUIRES MOON ANIMATOR 2]

  • I REACHED MY MAXIMUM OF 10 SALES A MONTH SO YOU WON’T BE ABLE TO BUY UNTIL NEXT MONTH!

:floppy_disk: Exportable Properties

✅ Added
  • Rig Animations
  • CFrame
  • Size
  • :Play() for Audio
  • Lines of Code
  • Brightness
  • ExposureCompensation
  • Density
  • Offset (Atmosphere)
  • Transparency
  • Contrast
  • Saturation
  • Enabled (Boolean)
  • TintColor
  • Decay
  • Rate
  • ImageTransparency
  • Width0&1
  • CurveSize0&1
  • ClockTime
  • TimeScale
  • Drag
  • Color
  • CanCollide
  • Material
  • Disabled for Scripts
  • Reflectance
  • Anchored Recently Added
  • Camera CFrame Client-Side Recently Added
  • AttachToPart Client-Side Recently Added
  • FieldOfView Client-Side Recently Added
🛣️ Planned
  • :thought_balloon: I am open to property suggestions!
❓ Possibility
  • Model CFrame
  • Particle Color
  • Beam Color

:thinking: How to use Moon2Module

💾 How to Export a Moon Animator file
  • Click on Moon2Module and a menu should pop up.
  • Select the project you want to export in the menu
  • Hit export and it should create a “Sequences” folder in replicated storage with the module inside!
📜 How to Play a Moon2Module ModuleScript
  • Put the ModuleScript where you would like it to be and require it in another script
    Example: local RocketLaunchSequence = require(game.ReplicatedStorage.Sequences.converted_RocketLaunch)
  • To play the ModuleScript, use either :Play() after the variable or require.
    Example 1: RocketLaunchSequence:Play()
    Example 2: require(game.ReplicatedStorage.Sequences.converted_RocketLaunch):Play()

:clapper: YouTube Showcase Video

19 Likes

despite the event effects, this is clearly better than the event effects module.
good job logan (I might not use it but I’ll try it out)

It’s finally here dude, congrats on the release :fire:

WE FINISHING THE OWNER WITH THIS ONE :speaking_head: :bangbang: :bangbang:

3 Likes

Hey question I tried to make it play but it wont work can I get some help? And thanks for making this!

Can you show me how you’re trying to play the module?

If yall are looking for an alternative to play your animations in game give MoonLite a try, it’s free and made by @Maximum_ADHD

GitHub - MaximumADHD/Moonlite: A WIP lightweight in-game player for xSIXx’s Moon Animator

2 Likes

This is my code
local data = {Playing = false}
local Sequence = {}
function Sequence:Play()
data.Playing = true
task.delay(0, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut),{CFrame = CFrame.new(-269.708801, -141.697388, -281.824097, 0.707107663, -5.14488408e-12, 0.707107663, 0, 1, -7.27595935e-12, -0.707107663, -5.14488408e-12, 0.707107663)}):Play()
end)
task.delay(0, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.8333333333333334, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-269.249664, -145.010681, -281.811859, 0.706393361, -0.0317597352, 0.70710808, 0.0449151024, 0.998990834, 3.16577129e-08, -0.706394494, 0.0317597426, 0.707106948)}):Play()
end)
task.delay(0.8333333333333334, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.8666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-268.772156, -148.456512, -281.799133, 0.704128504, 0.0648306683, 0.707108378, -0.0916846693, 0.995788157, 5.95974292e-08, -0.704130113, -0.0648309067, 0.70710665)}):Play()
end)
task.delay(1.7, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.9666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-268.239563, -152.299942, -281.784943, 0.705803871, -0.0428968258, 0.707108736, 0.0606654212, 0.998158097, 2.97950749e-08, -0.705806315, 0.0428969376, 0.707106352)}):Play()
end)
task.delay(2.6666666666666665, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.6666666666666666, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-267.872253, -154.950577, -281.775146, 0.70586431, 0.0418871045, 0.707108974, -0.0592375956, 0.998243988, 9.68503286e-08, -0.70586729, -0.0418874249, 0.707106054)}):Play()
end)
task.delay(3.3333333333333335, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.9666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-267.339661, -158.794006, -281.760956, 0.706043839, -0.0387378335, 0.707109272, 0.0547836535, 0.998498261, 1.11751504e-07, -0.706047356, 0.038737867, 0.707105756)}):Play()
end)
task.delay(4.3, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.7, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-266.953979, -161.577179, -281.750702, 0.706517577, 0.0288299918, 0.707109392, -0.0407720618, 0.999168575, 1.37828536e-07, -0.706521511, -0.0288303457, 0.707105637)}):Play()
end)
task.delay(5, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-266.458099, -165.155548, -281.737488, 0.705503643, -0.0475692339, 0.70710963, 0.0672732294, 0.997734606, 9.31250383e-08, -0.705507636, 0.0475693755, 0.707105458)}):Play()
end)
task.delay(5.9, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.8, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-266.017334, -168.336319, -281.725739, 0.706833243, 0.0196204428, 0.707109511, -0.0277476925, 0.999614954, 8.93997338e-08, -0.706837177, -0.0196206868, 0.707105517)}):Play()
end)
task.delay(6.7, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.8666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-265.503082, -172.047226, -281.712036, 0.705299139, -0.0505123623, 0.707109332, 0.0714354888, 0.997445226, 3.72456626e-08, -0.705302835, 0.0505125709, 0.707105637)}):Play()
end)
task.delay(7.566666666666666, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.9, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-265.020782, -175.527557, -281.699188, 0.706793189, 0.0210259445, 0.707109094, -0.0297353454, 0.999557793, 7.44985655e-08, -0.706796467, -0.0210261419, 0.707105875)}):Play()
end)
task.delay(8.466666666666667, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.7666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-264.609955, -178.492279, -281.688263, 0.706714928, -0.0235164501, 0.707109034, 0.0332573354, 0.999446809, 5.58721105e-08, -0.706717849, 0.0235164724, 0.707105935)}):Play()
end)
task.delay(9.233333333333333, function()
game.TweenService:Create(game.Workspace.Mansion,TweenInfo.new(0.7666666666666667, Enum.EasingStyle.Sine, Enum.EasingDirection.In),{CFrame = CFrame.new(-264.199127, -181.457001, -281.677338, 0.706831515, -0.0198156014, 0.707109094, 0.0280236527, 0.999607205, -3.63654983e-12, -0.706831455, 0.0198156424, 0.707109034)}):Play()
end)
data.Playing = false
end
return Sequence

I tried requiring it in another script and change the Play = false to true but nothings makes it run.

Agreed why should we use this over a free open source alternative?

2 Likes

wait so you are telling me this tool doesn’t even bothers to export every single frame and then run it?, its using tweens and task.wait() in real time?

This is like horrible for performance.

4 Likes

you run Module:Play()
dont change the playing value

Exporting every single frame would be very horrible for performance.

No idea how you get bad performance from tweening and waiting.

you do know that when you tween, you are already calculating every single frame right? and worse because you are recalculating it, when you could have just precalculated it and played the sequence.

also stepping through each frame according to the current clock ensures nothing ever runs out of sync.

This will start exploding once you have too many instances on a single file.

1 Like

Can you give me a little more info im sorry lol im a noob but the tutorial I though was outdated. Please show me a example if my Models name was: Mansion and the exported animations name was: Sinking THen I can go from that.

require(path . Sinking):Play()

Right now the module script has set CFrames for the Camera. Is there a way to customize where the camera views the cutscene/animation based on where the cutscene happens?