Swimming Discus for your Aquarium? here you can get it. Also includes schooling/flocking system.
Requires Unity Version 5.5
Screenshots & Animations

Most recent infos about all my Unity Assets can be found here.
Swimming Discus for your Aquarium? here you can get it. Also includes schooling/flocking system.
Requires Unity Version 5.5
Did you ever wanted a chattering teeth as a monster, enemy or just as an environment filler?
Here you can get it! This is one of that wind up toys, you may came across in your childhood, youth or even now and then.
Requires Unity Version 5.3
Summary:
★ 9 Animations included
★ uses Multi Materials only
★ No UV Maps! = Not Mobile Optimised!
★ 3 Different Eye Types
★ custmizable Look by Material & Forms
★ Dracula Add On Teeth
★ Pre-created Prefabs
Animation List:
★ Howl
★ Quick Bite
★ Triple Bite
★ Walk 1
★ Chattering 1
★ Chattering 2
★ Walk 2
★ Dead 1
★ Dead 2
Setup Video
On site shop: Here
CG Trader: https://www.cgtrader.com/3d-models/character/other/chattering-teeth-chomper
This is a Four Winged Space Enemy. This model is designed to be an Enemy for Games like Space/ Top Down/ Rail Shooter.
It can also be used for ANY other game type like for Jump ‘n Runs and so on.
For Shots you could use a Copy/Prefab of ShotSpot01 or just use anthing you like.
Just add ShotPoints for it or use the ShotSpot01 or anything you like.
There are 2 Models: unmodified and modified for the Demo Scene.
The modified already have events in the animations Tab & all animations are set.
This Script changes 2 Colors after a given amount of time(resetTime) in seconds.
In the Demeo Scene it is set to Weakpoint001-004, Shotspot01 and Engine01 of the model Enemy001.
You can always change the colors as you like to. Same with the resetTime. So the can swap faster or slower.
There are 4 Animations in the Model:
Idle
Shoot
Rotate Left
Rotate Right
Preview #01
Preview #02
★ Polys: 1260 / Tris: 2500
★ Animations: Idle, Shoot, Rotate Left, Rotate Right
★ Texture: TGA – 2k
★
★ Script: Weakpoint Color Change.
★ Now working with mechanim.
CG Trader Link: https://www.cgtrader.com/3d-models/aircraft/other/animated-four-winged-space-enemy
Unity Version: 5.3
https://www.octomangames.com/downloads/four-winged-space-enemy/
This is the documentation and setup guide for Simple Quest Manager. It is also inside the package!
Quest: Is a quest you can design to your needs. It contains strings for the description, hints, IDs, unlockable Quests, Rewards and so on.
QuestObjective: The Goal to achieve. Can be anything you can make contact with, destroy, collect. A string is used at the moment. You can also use an integer called ID.
QuestObject: Can be an NPC Character, any Object like a Book, a BulletinBoard or anything you can get quests from, or bring to.
QuestMarker: You can choose your own grafics of cause.
![]() | Exclamation Mark: Shows a Quest you can get. |
![]() | Gray Question Mark: Shows Running but not completed Quest |
![]() | Yellow Question Mark: Shows Quest Completed so it can given back to an NPC. |
Scenes: make sure to add the QuestManager and Quest UIManager Prefabs into all scenes where you need em.
Example: If you have NPC’s in a town you need the QuestManager in it, as well as the UIManager.
Since the QuestManager is persistent you don’t need it in a Battle Scene.
1.) The Quest Manager:
The Quest Manager is kind of the heart of the system. In here you design all your quests, and tell how many you have.
Size: Amount of Quests
Title: The title of a quest.
ID: The identifier of the quest, make sure all quest have a unique!
Progress: The current state of the quest. Only set them to NOT_AVAILABLE or AVAILABLE!
Description: Describe the Quest so people may know what to do.
Hint: Will be shown, once the Quest is ACTIVE and the Player talks to the Quest Receiver, or looks in the QuestLog
Congratulation: Will be shown, once the Quest is COMPLETE and the Player talks to the Quest Receiver, or looks in the QuestLog
Summary: Not yet completely implemented yet.
Next Quest: Represents the next Quest ID to be unlocked(form NOT_AVAILABLE to AVAILABLE) Chain Quests!
Quest Objective: A string parameter for the objective, like enemy1. needed to send the correct data later back to the QuestManager. ID’s would work as well.
Quest Objective Count: The current amount of the requested quest objective, should always be 0 at start. Example: Amount of killed enemys or picked up items.
Quest Objective Request: The requested amount of the quest objective.
Exp Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.
Gold Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.
Item Reward: Not fully implemented since everyone has a different system. You need to enter your own functionality, depending on your systems.
2.) The Quest UI Manager:
The UI Manager will take care of all visible content. So when you talk an NPC, it will show the QuestPanels, and shows the QuestLog when pressing the corresponding button.
In this case it’s Q i believe. You can change it later on.
If you want to change the look to fit your design, make sure you check the Prefab out first, or take the pieces used already and fit the design to your needs.
Quest Available: Leave it unchecked!
Quest Running: Leave it unchecked!
Quest Panel: Drag in your QuestPanel.
Quest Log Panel: Drag in your QuestLogPanel.
Available & Active Quests: Nothing to do here!
QButton: The Button Prefab for the Quests.
Q Log Button: The Button Prefab for the Quest Log Quests.Q Button Spacer: Usually an empty GameObject or Panel which holds the QButtons for Active Quests.
Q Button Spacer 2: Usually an empty GameObject or Panel which holds the QButtons for Running Quests.
Q Log Button Spacer: Usually an empty GameObject or Panel which holds the QLogButtons for Active Quests seen in the Quest Log.
Quest Title: Text component to show the clicked quest title.
Quest Description: Text component to show the clicked quest description.
Quest Summary: Text component to show the clicked quest summary.
(no direct connection to the quest summary field in the Quest Manager at the moment)
Quest Log Title: Text component to show the clicked quest title in the Quest Log.
Quest Log Description: Text component to show the clicked quest description in the Quest Log.
Quest Log Summary: Text component to show the clicked quest summary in the Quest Log.
(no direct connection to the quest summary field in the Quest Manager at the moment)
3.) Quest Button & Quest Log Button
This Buttons just showing the name of the Quests. So they just require a text component.
So the QuestButton needs the QButton Script. The Text field is the one on the Button itself.
Add an OnClick Event and set the ShowAllInfos Function.
Same For the Quest Log Button.
4.) The NPC’s:
The NPC will need a Canvas for the Exclamation Mark & Question Mark.
This also needs to be child of the NPC.
The big Collision Box in front of the NPC is of type Trigger, the small around the NPC is a Collider.
We need one of type trigger so the system will trigger the possibilty to talk to the NPC.
Now drag the Quest Object script on the NPC.
5.) Saving & Loading
The questList will be saved in a binary format so it’s kinda protected from possible cheaters. You can Drag the SaveLoad Script to any Empty GameObject and call SaveQuest() at any point you want. You can use Buttons and many more. You can also use a Singleton design pattern or make it static to access it from anywhere.
6.) Quest Objectives
If it is a collectible Quest Objective you can easily add the QuestObjective Script. Add the needed values, like string name or ID and that’s it.
If it is a “Destroy Monster amount x” just use 1 simple line of code, when the monster dies:
QuestManager.questManager.AddQuestItem(monsterName, 1);
Simple Quest Manager is an easy to setup and quick solution to create your own quests for your games in minutes.
★ Create your quests directly in the Inspector
★ No coding required
★ Quests can be taken and completed by differend NPC’s
★ You can create Chain Quests (unlock quests by completing others)
★ Currently only 1 Questobjective supported
★ You can save/load all Quests and their states at any point you want.
★ QuestObjectives are updated with just one line of code.
★ Rewards need to be setup on your own, depending on your systems like inventory/exp/currency
★ 1 Demo Scene (see Image above)
3d Models included:
★ 1 Low Poly Chara (walk and idle) 1 LowPoly NPC (wink anim)
★ 1 Low Poly Tree
★ 1 Low Poly Barn
★ 1 Low Poly Fence
★ 1 Low Poly Key
Just 6 Scripts are driving the complete System.
Demo Video
Setup Guide
coming soon….
coming soon….
Shop Link: Get it here!
This is a rigged and animated hydraulic excavator with a rather low polycount. All important pieces are UV-Mapped, some just use materials, like cables, hydraulic pipes. Also i added 2 basics scripts to steer the excavator.
★ 11649 polys
★ Rigged & Pre-animated
★ Basic Script for Movement & Working
★ Diffuse + Normal Map 4096px
★ 5 Animations
★ Uses Mechanim
★ already working Prefab
★ BigArm Open/Close
★ SmallArm Open/Close
★ Shovel Open/Close
★ Rotate Top 360°
★ Door Open/Close
All cables are rigged and baked into the existing animations.
The model used 5 different materials, because not all elements are unwrapped! If needed i unwrap needed pieces too.
The scripts provide:
★ Working Mode / Driving Mode (Button TAB)
★ Open / Close Door (F Button)
In Drive Mode:
★ Turn Left Forward / Backwards(Q & A Buttons)
In Working Mode:
★ Big Arm Up / Down (W & S Button)
★ Small Arm Up / Down (Arrow Up / Down)
★ Shovel Up / Down (Arrow Left / Right)
★ Rotate Upper Part (A & D Buttons)
Those scripts are not smoothly optimised, just a base to begin with!
Unity Forum: http://forum.unity3d.com/threads/3d-model-hydraulic-excavator-ec-180-wip.424785/
Since i get the same requests over and over again, i decided to write a small FAQ with small snippets of code and such, depending on the needs of purchasers.
1.) How to make a 2D Trigger to unlock the next Level?
2.) How to delete Save Data without restarting the whole game.
3.) How to set the world button background images individually?
4.) How can i implement a “Next Level” button after i have completed a Level?
5.) How can i have individual scores to unlock stars for each level?
6.) Can i create alot levels in just one scene?
7.) How to create the buttons on a Map without a Grid Layout Group?
8.) How can i tint the current World Button?
9.) How to implement a simple loading screen?
10.) How to unlock the next Level only with a specific score?
11.) How can i change a Background Image when i press the World Button?
12.) How to unlock world Buttons according to a Stars Amount?
13.) How to show World & Level Buttons on different Screens?
14.) How to show the choosen World Name instead of “World 1”?
15.) How to load levels only if i have enough “Lifes”
Whatever your Trigger is, add a script to it. In there create the OnTriggerEnter2D Function:
//Unlock Next Level On touch
void OnTriggerEnter2D()
{
int myCurLevel = GameManager.Instance.loadedLevel;
int myCurWorld = GameManager.Instance.loadedWorld;
if (myCurLevel < GameManager.Instance.worldsAndLevels[myCurWorld - 1])
{
PlayerPrefs.SetInt("Level" + myCurWorld + "_" + (myCurLevel+1), 1);
}
}
Just extent the DeleteAll() function with this extra line of code:
//Reload Scene
SceneManager.LoadScene(SceneManager.GetActiveScene().name);
In the World Class add a new sprite;
public Sprite WorldSprite;
In the FillList() function in the first foreach loop after the world button has been created enter this:
//change the background image of the button itself
if (world.WorldSprite != null)
{
newWorldButton.GetComponent<Button>().image.sprite = world.WorldSprite;
}
Now you can use different sprites as background images in the world buttons, just drag them into the inspector slot.
Create your button. Add an onclick event. In Saver add this small function:
public void GoToNextLevel()
{
if (curLevel < GameManager.Instance.worldsAndLevels[curWorld - 1])
{
GameManager.Instance.loadedLevel = (curLevel + 1);
SceneManager.LoadScene("Level" + curWorld + "_" + (curLevel + 1));
}
else
{
Debug.Log("NO LEVELS LEFT IN THIS WORLD");
}
}
Drag Saver into the On Click event of the button and choose GoToNextLevel function.
Add the Star1Points, Star2Points, Star3Points variables into the Level class.
Change the 3 Lines in the 2nd foreach where you see
>= Star1Points >= Star2Points >= Star3Points
To
>= level.Star1Points >= level.Star2Points >= level.Star3Points
Now you can set Star Points for each Level individually.
No! Level Manager Plus needs 1 scene per level.
This might require you to change the Button Size and appearence depending on the screensize. You can even create a 3D Level Selector with this method ;).
Here is how:
1.) If you want different positions in each world. Add this in the world class in The Level Manager Script:
public List <Transform> buttonPositions = new List<Transform>();
This will be the list for all button positions. You can also use Vector2 Or Vector3 if you know the positions.
2.) Create an empty GameObject without any Layout Group on it and make it child of your main Panel, Name it FreeSpacer1 or whatever you please. Make it as big as your Map is.
3.) In the Level Manager GameObject, in World 1 change the Spacer to this GameObject(FreeSpacer1).
4.) Now create empty Images or whatever in the MainPanel for the positions where you want the buttons to appear. Rename them properly so you know where which button has to be. You can also help yourself with using Icons in the top left of the Inspector(The gray ones in the image below).
5.) Now again in the Levelmanager Script go to the FillList() function. In the foreach loop for the levels, after this line:
newbutton.transform.SetParent(world.Spacer,false);
Add the following:
if (world.buttonPositions.Count > 0)
{
button.transform.position = world.buttonPositions[curLevel - 1].position;
}
6.) Now drag your locations you need into the buttonPositions List.
7.) Once done disable the image components of your location Objects, so you wont see em and you will have your buttons anywhere you want on the map.
Repeat steps 2,3,4,6 for all worlds, Or mix it how ever you like , Done!
This can be fairly easy achieved.
1.)Open up WorldButton.cs
2.)Input the following function:
public void changeColor()
{
//Find all Worldbuttons in the scene
GameObject[] worldButtons = GameObject.FindGameObjectsWithTag("WorldButton");
for (int i = 0; i < worldButtons.Length;i++)
{
worldButtons[i].GetComponent<Button>().image.color = Color.white;//change all to white color
}
GetComponent<Button>().image.color = Color.red;//change the currently clicked one to red
}
3.) Add this function now to the OnClick Event in the WorldButton Prefab. To do so click on the + Drag in the World Button Prefab and choose changeColor() on the right.
Now you are able to click on the Buttons so the can switch their color. But you also want that from the start of the game so we have to make a small change in the levelmanager.cs
4.) Open LevelManager.cs
5.) create a new List in the top
List<GameObject> worldButtons = new List<GameObject>();
6.) Now in the FillList() function search for SaveAll(). Under that you see this:
//show the right/last used World Spacer
if (GameManager.Instance.loadedWorld > 0)
{
WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);
}
else
{
WorldList[0].Spacer.gameObject.SetActive(true);
}
Change it to this:
//show the right/last used World Spacer
if (GameManager.Instance.loadedWorld > 0)
{
WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);
//Change the color of the world button to red
worldButtons[GameManager.Instance.loadedWorld - 1].GetComponent<Button>().image.color = Color.red;
}
else
{
WorldList[0].Spacer.gameObject.SetActive(true);
// Change the color of the world button to red
worldButtons[0].GetComponent<Button>().image.color = Color.red;
}
That’s it.
This is a rather easy task. Open LevelManager.cs.
1.) Create a new variable for our Loading Image:
GameObject loadingImage;
2.) In Start() add:
loadingImage = GameObject.Find("LoadingImage");
loadingImage.SetActive(false);
3.) In the Canvas create an Image, make it uniform stretch and add all you need as child objects. Like: Sprites, Text, Loading Circles… Make sure it’s named LoadingImage so it can be found on Start(). You can implement animated stuff as you please and like on it as childs.
4.) Change the loadLevels function to this:
void loadLevels(string value)
{
//Application.LoadLevel (value);
//SceneManager.LoadScene(value);
StartCoroutine(LoadingImageWait(value));
}
5.) Now we need an IEnumerator to show the Image, wait a bit and then do the actual loading.
IEnumerator LoadingImageWait(string value)
{
loadingImage.SetActive(true);
yield return new WaitForSeconds(3);//change the number to how long you want at least the loading screen be visable!
SceneManager.LoadScene(value);
}
So now, when you press a LevelButton, you will see the image for 3 seconds, then the actual loading process will happen. This is only a one way solution!
Since the Saver.CS always unlocks the next level once it’s called, you need to make sure you put this unlocking into an if statement which checks, if the score is high enough before you unlock the next level.
1.) So open up Saver.CS and go to the SaveMyGame() function. Inside the first if statement is this line(39):
PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1
And in the else if statement this line(51):
PlayerPrefs.SetInt("Level" + curWorld + "_" + NextLevel, 1);
Around that lines you need to build the if statements to check if the score is high enough, to unlock the next level:
if (score >= 100)
{
PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1
}
Instead of hardcoding it you can always create a variable to pass in any values per level you like and set them up in the inspector:
public int unlockScore;
if (score >= unlockScore)
{
PlayerPrefs.SetInt("Level" + NextWorld + "_1", 1);//unlock next World with level 1
}
1.) Create a new variable in the World Class in LevelManager.CS
public class World
{
...
public Sprite WorldBackround;
}
2.) Also we need a variable to put the Image in, you can place it directly in the canvas or where you like.
public Sprite LockedSprite;//after this
public Image WorldBackgroundImage; //add this
3.)In the first foreach Loop look for this line
GameObject value = world.Spacer.gameObject;
under that add
Sprite WSprite = world.WorldBackround;
4.)change the Addlistender Call from:
//call the addlistener functions
WorldSwitcher(b, value);
to this:
//call the addlistener functions
WorldSwitcher(b, value, WSprite);
5.) At the End of the Fill List Funtion is a SaveAll() Call. The If statement after this needs to be changed to:
if (GameManager.Instance.loadedWorld > 0)
{
WorldList[GameManager.Instance.loadedWorld - 1].Spacer.gameObject.SetActive(true);
WorldBackgroundImage.sprite = WorldList[GameManager.Instance.loadedWorld - 1].WorldBackground; //add this
}
else
{
WorldList[0].Spacer.gameObject.SetActive(true);
WorldBackgroundImage.sprite = WorldList[0].WorldBackground;//add this
}
6.) Change the WorldSwitcher Function to this:
//show the right spacer for the corresponding world
void WorldSwitcher(Button b, GameObject value, Sprite WSprite)
{
b.onClick.AddListener(() => SwitchWorlds(value,WSprite));
}
7.) Change the SwitchWorlds Function to:
void SwitchWorlds(GameObject value, Sprite WSprite)
{
foreach (var world in WorldList)
{
world.Spacer.gameObject.SetActive(false);
}
value.SetActive(true);
WorldBackgroundImage.sprite = WSprite;
}
8.) Now Save and fill in the data inside Level Manager GameObject.
1.) First Make sure you show the Player what the needed Stars are. How you want to design it is your own decision!
I created a panel as a child of my World Button with a Lock Image, A Stars Text and a Star Image.
2.) Now we need to implement that Panel and the StarsText to our WorldButton Script.
So add that 2 Variables:
public GameObject lockPanel;
public Text starsNeededText;
3.) After you have saved the Script Drag the Panel and text for the Stars in the Script on the Button:
4.) Now we need to implement the funcionality onto the Level Manager Script.
In the World class add this variable:
public class World
{
...
public int starsNeededToUnlock=0;
}
Add another variable maybe ate the end of the variables.
private int starsCounter=0;
Now in the 1st foreach of the FillList() function add after line i show:
Wbutton.WorldText.text = "World " + curWorld.ToString();//after this line
Wbutton.starsNeededText.text = (world.starsNeededToUnlock-starsCounter).ToString();//ADD THIS
And after the following stuff add this:
Button b = Wbutton.GetComponent<Button>();//after this line
//add this
if (world.starsNeededToUnlock - starsCounter == 0)
{
Wbutton.lockPanel.SetActive(false);
Wbutton.GetComponent<Button>().interactable = true;
}
else
{
Wbutton.GetComponent<Button>().interactable = false;
}
Finally we need to count the stars in the 2nd foreach loop:
button.Star1.SetActive(true);//after this starsCounter++;//add this button.Star2.SetActive(true);//after this starsCounter++;//add this button.Star3.SetActive(true);//after this starsCounter++;//add this
4.) Now all is setup. In the Level Manager make sure the first World has 0 stars needed and the others seted up to your needs.
(IMPORTANT) If needed stars are less thatn levels per world completed make sure to set other worlds first Level to be unlocked and interactable.
The result could look like this:
1. Create a Panel for the World Buttons in the Canvas.
Example:
2.) Create a LevelSpacer for each World
Example:
The Back Button is used to switch between the world & the Level Spacers.
Make sure you arrange all like this:
In LevelManager.CS create 2 new Variables:
public GameObject WorldPanel;
public GameObject LevelPanel;
And 2 new functions:
public void ShowWorldPanel()
{
WorldPanel.SetActive(true);
LevelPanel.SetActive(false);
}
public void ShowLevelPanel()
{
WorldPanel.SetActive(false);
LevelPanel.SetActive(true);
}
ShowWorldPanel();
void WorldSwitcher(Button b, GameObject value)
{
b.onClick.AddListener(() => SwitchWorlds(value));
b.onClick.AddListener(() => ShowLevelPanel());
}
Wbutton.WorldText.text = "World " + curWorld.ToString();//world.worldNumber;
Wbutton.WorldText.text = world.worldName;
1.) In LevelManager.cs look for
void loadLevels(string value)
In here you just add your Lifes system, Example:
void loadLevels(string value)
{
if(LvGameManager.lifes>0)
{
LvGameManager.lifes--;
SceneManager.LoadScene(value);
}
else
{
Debug.Log("NO LIFES LEFT");
}
}
Color Switcher is a small script written in C#.
Color Switcher will switch or fade through as many main colors of GameObject/ 3D-Models as you like with a given interval between the colors. Color Switcher has a Editor Script which makes it easier to handle all inputs. You can enable several Color Switcher at the save time for syncing them in runtime. You can reverse the order depending on the Element you start.
Color Switcher will loop through all given colors until you stop it. For Example it starts at Color 1 , goes through all following and once completed it starts again at Color 1. Ping Pong will send it back and forth instead of looping.
The current color of the GameObject can also be used as the first color, no mater what you placed in it.
To create some randomness you can use the same setup everywhere, but on some you can begin with another element(Color) . More randomness with the same color sheme / setup can be achieved with ping pong and / or reverse.
If there is a Texture Map on your GameObject, Color Switcher will still work, and will tint it with the colors you set. The texture itself will not be changed. If the colors are to dark, you will not notice any change, because black for example is the darkest color already and can’t be red tinted.
★ Uses RGB Color Palette
★ Easy and quick to setup
★ Choose as much colors as you like
★ Set an Interval (time between the colors to switch in seconds)
★ Works on Multi-Materials(Map dependant)
★ Reversed (switch backwards)
★ PingPong
★ Fading (can fade between colors)
The Package contains a manual pdf and a Demo-Scene. Please watch the videos to see how it works.
Police / Firetruck sirens
Working site signs & street arrows
Weakpoints of enemies – Four Winged Space Enemy
Christmas lights
and so on….
Unity Forum: Link
Unity Asset Store Link: http://u3d.as/aGc
Price: $5
This 3D model can be purchased for only 8$ in the Unity Asset Store.
More Infos about this Model here: https://www.octomangames.com/unity-assets/maron-v1/
Unity Asset Store Link here: http://u3d.as/9mi
The Particle Effect Bubbles is available now in the Unity Asset Store.
More infos can be found here: Bubbles