This repository contains community-created extensions for the TopDown Engine, More Mountains' bestselling top down games solution, available on the Unity Asset Store. These extensions can be anything, from an alternate take on an existing Character Ability, to brand new ones, or new ways to use the engine.
- AngleBasedAutoAim, by AlexanderGheorghe : extensions of WeaponAutoAim2D/3D that aim at the target with the smallest angle between the movement direction and the character-target direction instead of the closest target
- AIAction2DPathFinding, by Gabriel Elkind : an A* Pathfinding Project integration
- AIActionMoveTowardsPlayer2D, by Efreeti : makes the character move up to the specified MinimumDistance in the direction of the target.
- AI Brain Extensions, by TheBitCave : These are hosted separately, at https://github.com/thebitcave/ai-brain-extensions-for-topdown-engine, and provide a way to interact with AI Brains using visual nodes.
- AIDecisionPlayerIsInSameRoom, by 石田ぎがしー Gigacee, an AI decision that returns true if the player is in one of the specified rooms, false otherwise.
- AI Performance Manager, by Force : A system used to disable AIs based on distance to the player for better performance
- BlockAbilities, by AlexanderGheorghe: scripts for blocking selected character abilities while attacking
- Boomerang, by AlexanderGheorghe : a component that makes Projectile decelerate and return to the owner when it stops. works in both 2D and 3D. includes 3D demo, unitypackage for easy installation and boomerang model from The Base Mesh
- Character8WayGridMovement, by @jcphlux : adds support for 8-way grid movement.
- CharacterDamageMultiplier, by AlexanderGheorghe : a collection of extension scripts that implement character-level damage multiplier. includes an example of pickable damage multiplier. requires adding public virtual void ApplyDamageMultiplier(float multiplier) {} declaration to Weapon.cs
- CharacterInventoryWeaponChanger, by AlexanderGheorghe : this script allows you to use scroll wheel or number keys to change your weapon to any weapon from your MainInventory
- CharacterProne, by AlexanderGheorghe : duplicate of CharacterCrouch that allows you to have different animations (Animator parameters "Prone" and "ProneMoving") and different collider resizing, useful for making a character prone like in Metal Gear Solid, for example
- ClimbingController3D, by AlexanderGheorghe : An extension of TopDownController3D which gives you the option (activated by default) to have CharacterDash3D climb slopes instead of stopping at obstacles and to move the character downwards while dashing, at a configurable speed. It uses CharacterController.Move(), which means you no longer need to put objects to avoid when dashing on the layers of the obstacles layer mask, because the CharacterController will be handling collisions.
- Control Freak 2 Integration, by christougher : support for the input solution Control Freak 2, available on the Asset Store.
- GrapplingHook, by AlexanderGheorghe, : 3D grappling hook implementation with rope animation
- GridPathfinding, by AlexanderGheorghe, : grid versions of CharacterPathfinder3D and CharacterPathfindToMouse3D
- HeldButtonZone, by Dougomite : a button activated zone for which the player needs to keep the button pressed for a certain duration to activate
- InvertedMeshConeOfVision2D, by AlexanderGheorghe : version of MMConeOfVision2D with inverted mesh (mesh is where the character doesn't have vision)
- MarbleCharacter, by AlexanderGheorghe : scripts that enable creating marble type characters. includes example character prefab
- MMFeedbackLootDrops, by Dougomite : an MMFeedback that spawns "loot" (item pickers or any object you want) in a certain radius at weighted chances
- MouseControls3D, by AlexanderGheorghe : a collection of extension scripts that implement Diablo-like mouse controls (double click to run, click and hold to make the character follow mouse position, click an enemy to pathfind to it and attack when in line of sight and in range). requires adding the public float Range = 10f; declaration to Weapon.cs so the character knows when it is in range to attack, depending on the weapon he has equipped. includes unitypackage for easy installation and an example character prefab
- MultiInventoryDetails, by men8 : an addon to handle all active inventories on scene. See this repo for more info.
- MultipleWeapons, by AlexanderGheorghe : two scripts, extensions of CharacterHandleWeapon and InputManager that go together to allow you to have your characters handle any number of weapons you want at once, from 0 to 1000000, the possibilities are infinite! includes an InputManager.asset with already configured bindings for the second weapon reload and third weapon input (2, 3 for reloading second and third weapon, middle mouse for shooting the third weapon)
- PathfindingAvoidance, by septN : this CharacterPathfinder3D extension lets you have characters carve the navmesh and avoid each other. You'll need to add a NavMeshObstacle to your character(s), check "Carve" and uncheck "Carve Only Stationary"
- Perspective, by AlexanderGheorghe : a collection of scripts that allows toggling between top down and first person perspectives. includes demo scene based on Loft3D and unitypackage
- PickableAbilities, by AlexanderGheorghe : PickableItem extension that allows configuring a list of abilities to be enabled on the picking character
- ProgressionSystem, by AlexanderGheorghe : a simple, extendable, scriptable object based progression system (get experience -> level up -> update stats). uses AnimationCurves for value management, as explained in this video
- ProjectileHoming, by AlexanderGheorghe : a component that gets a target on spawn and rotates Projectile's direction towards the target every frame, stopping if it misses the target. works in both 2D and 3D
- ReferenceFrameCharacterMovement, by Necka : a specialized variant of the Character Movement ability that corrects for a reference frame camera
- RewiredIntegration, by Tony Li [Pixel Crushers] : support for the input solution Rewired, available on the Unity Asset Store.
- SpecificInvulnerabilityHealth, by AlexanderGheorghe : an extension of Health that calculates invulnerability per instigator GameObject (DamageOnTouch usually). this allows you to have overlapping damage on touch all affect your characters and count down invulnerability individually
- SpeedMultipliers, by AlexanderGheorghe : extension scripts that add speed multipliers. includes demo of slowing down all enemy characters while the player continues to move at normal speed
- Stamina, by AlexanderGheorghe : simple stamina that gets consumed when running or dashing and stops either if it's too low
- StatusEffectSystem, by AlexanderGheorghe : a simple, extendable, scriptable object and event based status system. includes 5 status effect examples, a demo scene and a .unitypackage for easy installation
- ToggleCrouch, by AlexanderGheorghe : CharacterCrouch extension that makes the crouch button toggle instead of having to hold it to keep crouching
- TriggerEventOnAreaClear, by AlexanderGheorghe : a script that triggers a UnityEvent when all the targets within an area (defined by a 2D or 3D collider) have been destroyed (useful for example in the room system to open doors/portals or spawn chests when all enemies have been killed). tag targets with the respective 2D/3D scripts included
- TwinStickShooterHandleWeapon, by AlexanderGheorghe : an extension of CharacterHandleWeapon that gives you the option to shoot on receiving SecondaryMovement input, with configurable minimum magnitude of the input
- TypedDamage, by AlexanderGheorghe : a collection of extension scripts that implement typed damage with scriptable objects, like explained in this video.
- Vehicle, by AlexanderGheorghe : allows creating vehicles that the player character can enter, drive and exit. uses Hayden Donnelly's Vehicle-Physics.
- WeaponLaserSightEx, by Velsthinez : an extended version of the base WeaponLaserSight to create a widening laser when player turns
Because they weren't created by Renaud, the creator of the TopDown Engine, because I want to keep the Engine simple to use and just pouring features into it (as cool as they may be) wouldn't be such a great idea, and because the Engine is meant to be extended upon, and these extensions are great examples of that.
No you don't, it's all free to use. Feel free to give credit to their creators though (they'll mention that in the class' comments if they want to).
Absolutely, contributions are always welcome. If you want to contribute, drop me a line using the form on this page, or create a pull request on this very repository.
You'd need to contact the creator of the extension if they've put their contact info in the class somewhere. If not, not much I can do, I won't provide support for these.