EGS Name: joshuajames2
Package Name: Creature Mixer
SCIENCE FAIR GONE WRONG!!???
Creature Mixer is a package to easily mix and match different parts with just a little Setup. It also takes care of visibility and collision state when switching parts and also notifying whenever a part gets hit. You can also easily make and add your own creation to it.
- Having Customizable Pets
- Different variation of enemies without having to use a tons of Templates.
- “Gacha” game, that you can pull monsters and have different rarities based on their parts.
This Package contains 6 scripts and 1 Template. Only 1 template since I don’t want to bombard the user with so many templates so I just compile them in one. It’s up to you to make the template.
- Creature - Main script that controls and sends request to the CreaturePartManager
- CreaturePartManager - Defines the Part type. Contains and controls all the part on its children.
- CreaturePart - This script is attached to the entity part. This sets the identity of the part and updates the part’s visibility and collision state.
- CreatureHealth - a simple health script just to showcase the damage on CreaturePart.
- CreatureBehaviour - standalone script that can be used anywhere to bring life to an entity.
- CreatureCreator - sample script to show how to use the function in Creature script.
- Flying Eye - Flying eye that moves in a circular motion
- Monster Book - Scary book that can only be killed by shooting the moving candle
- Evil Pumpkin - An agressive possessed pumpkin that moves sideways
Install the package by going to Community tab and search “Creature Mixer”
Head to Templates and drag the “Creatures” to your world. You will see 3 creatures on there. Now try to preview the scene. You can see them moving.
Now, let’s try to change the parts. Have any entity in your world that can be interacted. A mesh or Trigger for example
Add the CreatureCreatorSample on it. On the “creature” property choose any of the 3 creatures to put there. For the “partType” let’s try to change the “top” part.
Next, Add it to the "On Interact"event put “Cycle Next” or “RandomAll” in the event.
Start Preview mode and try to interact with it and see the magic happens.
This is just one of the few functions that you saw. There are more functionality that can be used. Check it out on the “Creature” script.
Adding new Part Type
If you think you need more part types or simply just because the types don’t describe your parts. It’s easy to change or add part types.
- Open the CreaturePartManager. On its properties, there you can add new part type. Let’s try to add a part named “New Part”. Just simply insert it there.
- Then, Create a new Locator that will be the parent of the new parts and add the CreaturePartManager on it.
- CreaturePartManager Properties
- Parts - You can directly reference the parts if you don’t want to use everything on its children. Leaving it empty will automatically use its children.
- Default Part - the part that will be enabled when it gets inited.
- Part Type - The type that this container handles. “none” = this won’t get changed or modified. Also only one part type should exist in each creature.
- Next. add the entities/parts to its children and add the CreaturePart script.
- CreaturePart Properties
- friendlyName- ID Name of the part. Leaving it empty will use the entity name instead
- id - ID Number of the part.Make it unique for each part to see the expected results…
- damageable - Will this entity and its children take damage when it got hit?
- (Optional) On the Root entity on where the “Creature” script is, if you have reference on the partManager add the NewPart type to it. But if its empty just leave it since it automatically gets all the entity with a “CreaturePartManager”.
Every properties/variable has a tooltip so don’t forget to check them if you are lost.
I suggest to make a template for every part container if you will use it most of the time so you can easily add and remove parts if needed. Then just manually add reference of the parts to the list if you don’t want to use every part in the children for that entity.
CreaturePartBehaviour is a standalone script it can be used even outside of the creature scope. Try to experiment with the values to achieve surprising results.
CreaturePartBehaviour runs on the client. You can change it on the script to run on server as needed.
The list/array on the “Creature”,“CreaturePartManager” and “CreaturePart” doesn’t have to be filled, These scripts will automatically look for what they need when the you leave the array empty when it gets inited.
The entities/part that will not get changed should also have a “CreaturePart” script since it’s the one that notifies the other when the part takes damage. It also should belong to a “CreaturePartManager” and just set the partType = “none”.