
Learn to build a vertical scrolling shoot 'em up in Unity with C#, similar to Sky Force, using scriptural objects and a busia curve, with weapons, upgrades, and achievements.
In this video, I'm going to explain how we are going go with the scirpting concept, and the benefits using a separate component for each action or function.
Import the package in a new Android Unity project, set portrait orientation and company name, then configure air and ground layers, enemy and bullet tags, and save the scene.
Notes: if someone having issues with the movement, please try changing line 40, from:
Vector3 movement = Vector3.Lerp(transform.position, screenToWorld, speed * Time.fixedDeltaTime);
into:
Vector3 movement = Vector3.Lerp(myRb.position, screenToWorld, speed * Time.fixedDeltaTime);
Create a temporary object pooling system to enable shooting, then lay groundwork for a polling system by implementing a polling manager with a static instance and object retrieval and return.
Create and configure scriptable objects to store weapon stats: speed, damage, fire rate, spread, and burst count, for both player and enemies, enabling reusable, configurable weapon profiles in Unity.
Configure a Unity bullet prefab by setting up a bullet sprite, empty base object, capsule collider, and rigidbody, align to world Z, and script forward velocity for movement.
Create a shooting script using a routine that returns an enumerator to control bullet spawning, interval, and spread around a fire point defined by a shoot profile in Unity.
implement the starting health system in Unity by creating enemy bullets, configuring tags, and building a health script with max health, hit effects, and on trigger enter damage handling.
continue building the health system by implementing hit effects, adding a delay parameter in the pulling manager, and calculating trigger position and direction to spawn sparks at impact.
Implement a health and death system in Unity: check health after damage, destroy or deactivate objects, trigger death events, spawn explosions or coins, and award points for enemies.
Learn to extend the death system by spawning objects like explosions, coins, and flames, and implement a health bar that updates via a world-space ui during combat.
Create a node-based movement system in Unity by defining a public list of Vector3 notes and computing a cubic bezier path to move enemies along a curve.
Create a custom editor in Unity to visualize and edit a curve via node-based movement, using handles and gizmos in an ed scripting workflow with a custom inspector.
There is a slight mistake in the video, apparently we need to change the line 85, from:
realLoopNode = (curvedNodes.Count * (loopToNode / (nodes.Count));
to:
realLoopNode = (int)(curvedNodes.Count * (loopToNode / (float)nodes.Count));
and the reason is, loopToNode/nodes.Count return 0, since both is in integer, and integer can't store float, so we need to make sure to cast one of the value to a float value, so it will resulting in float value, then we can multiply it with our curveNodes.count, so we get an approximate position in curved nodes, and then at the end we need to cast it back to integer, that's why I put (int) in front of the calculation. Hope this helps, so sorry for the confusion.
Convert world positions to the local space using inverse transform point for correct bus following on the curve, and add a rigidbody with gravity disabled for performance.
Rotate objects using quaternions to create node-based movement, including banking on the y-axis, angle clamping, and smooth rotation via quaternion slerp to align with the target path.
Learn to create enemy waves in Unity by scripting wave formation, instantiating enemies at set intervals, and disabling enemies after a timeout, all controlled via inspector options.
Build an auto-rotate turret in Unity with a configurable speed and endless rotation, plus a public start method, align the Y axis, and integrate a shooter system for bullets.
Create a missile turret that follows the player and rotates to face them in Unity, using a missile prefab and weapon profile to launch threats.
Create a local move script that moves a transform relative to its parent from an initial to a target position over a duration, with optional reverse and Unity events.
Design a boss in a unity vertical shooter by configuring enemy threats, weapon profiles, and a world-space health canvas; implement bullets, missiles, explosions, health readouts, and multi-stage behavior.
Implement boss movement by creating a looping path for the bus ship, keeping rotation fixed, and coordinating missiles, health, and explosions to challenge players.
Set up the human rescue feature in Unity by adding a human object with materials, a trigger collider, and a circle bar timer UI that runs for the rescue time.
Learn to implement an efficient pooling system in Unity by building a pulling manager that pre-instantiates objects, reuses them via a queue, and deactivates them instead of destroying.
Design a level for a mobile vertical shoot 'em up in unity by building ground tiles and a world mover, organizing the player and camera hierarchy.
Design and place enemies and threats in a vertical shooter level in Unity, configuring missile threats, normal threats, shooters, explosions, flames, sparks, health, colliders, and off-screen triggers.
Create an enemy activator in Unity using a trigger script, enable the enemy on enter, disable on exit, and coordinate colliders, health system, and shooting.
Configure coins in Unity with a magnet script that uses Rigidbody movement to pull coins toward the player within a defined range, and enable pickup with audio feedback.
Create a camera script that follows the player with subtle horizontal movement, clamped between a minimum and maximum x range, using late update for smooth, responsive motion.
Integrate a boss into a shooter level in Unity by wiring activation triggers, parenting objects, and managing scene changes to ensure the boss follows, fires missiles, and resets after defeat.
Integrate the enemy into the scene by configuring an activator and collider to enable enemy waves, adjust the wave position and curve, and fine-tune trigger timing with an offset.
Design and implement a laser weapon for a mobile vertical shooter in Unity, including art setup, 9-slice features, particle bursts, and a firing script with collider logic.
Create a mega bomb in a vertical shooter using a particle-based explosion, sphere burst, and a b key deploy to damage enemies via overlap with their health system.
Create a shield power-up in Unity, attach a shield object with a transparent orange material, and implement a duration-based shield script with hit effects and enemy interactions.
Develop a player missile in Unity by refactoring the weapon script to target the nearest enemy using enemy tags, adding a nearest-target finder, and testing rotation and upgrade-ready options.
track enemy kills, human rescues, and untouched status in a Unity level manager, using a serializable medals class and a singleton pattern to unlock achievements at level end.
Create a stats manager to handle item profiles and a five-level upgrade system for weapons, health, shield, laser, and missiles, with binary save/load and a UI upgrade flow.
Configure the stats manager to drive weapon upgrades, health and shield upgrades, and money handling with blaster and missile profiles. Manage upgrade timers and serialize progress in Unity.
Build a Unity upgrade system for a vertical shoot 'em up, implementing money checks, price level upgrades, and time-based progress via coroutines with a shop panel UI.
Improve the upgrade system by refining the buy button, setting up a five-level slider with a masking bar, and displaying affordability feedback within the game's UI.
Create a Unity dialog system for a vertical shoot 'em up by building a window, text, and buttons, then implement a singleton dialog manager with show dialogue and yes/no actions.
Explore implementing a save system and safe system in Unity to preserve upgrade progress, load stats, and update the UI, using a binary formatter to serialize a safe data object.
Create a scene loader in Unity that shows real-time loading progress with a prefab manager, a loading panel, a progress bar, and a singleton loader updated via coroutine.
Create a vertical level menu in Unity for a mobile shoot 'em up, featuring a deck, play button, and three level entries with achievement-based color cues and a scene loader.
Extend the level menu in the gameplay scene by building a canvas and panel, and implement an achievement system tracking kill, rescue, and untouched medals via a stats manager singleton.
Learn to implement UI transitions in Unity by building a screen manager that gathers panels, fades canvases with a canvas group, and safely switches between level and shop screens.
Create a Unity money display script with a static instance initialized in Awake to update the tax UI component using display money(value).
Set up a dynamic audio system in Unity by creating an audio scripts folder, managing audio clips and sources, and playing random pitched sounds for explosions, bullets, and missiles.
Implement touch movement for the player in a Unity mobile game, using preprocessor checks and the first touch position to drive movement.
Design and implement an interactive power up menu in a Unity vertical shooter, including shield, laser, and mega bomb buttons, bullet time, and responsive ui.
Apply stats to update radius, damage, and laser for the vertical shooter. Retrieve values from the stats manager and switch weapon profiles to reflect upgrades in health and weapons.
Build a Unity 2D scoring system for a vertical shooter. Display and update score with the level manager, apply random score ranges, reward bosses, and manage health with pooling.
Create a weapon upgrade menu for a mobile shoot 'em up by adding upgrade items for health, laser, and missile, and wiring their state names from the game manager.
Learn to implement a level unlocking system in Unity, with a scrollable vertical level selector, content size filtering, masking, and progress-based unlocks using a stats manager and save/load mechanics.
Configure android sdk and open jdk in unity hub, set up build and signing with a keystore, and enable 64-bit builds for final Android deployment.
Optimize the not move script by using local space for nodes, enabling the gizmo to follow the object, and caching curve notes for performance.
In this video, we are going to address a couple of bugs, such as:
StatsManager.cs add check when adding value to the LevelCompleted dictionary.
Level should not be unlocked if the player dies.
Course updated to be compatible with Unity 2019.4!
Ready to take your game development skills to the next level? Join us in this exciting course where we will teach you how to create a fully functional Shoot Em Up game (think Skyforce or Raiden) from scratch using Unity.
Whether you're an experienced Unity developer looking to expand your skill set or a newcomer to the world of game development, this course is for you. We'll guide you through the entire process of creating a game, starting with object oriented programming and delving deep into Unity's C# API.
But we won't just stop there. We'll provide you with all the assets you need to bring your game to life, including 3D models and audio. And you'll have the freedom to use these assets in your own games as well.
Throughout the course, we'll also introduce you to advanced concepts such as Component Based Design, Movement, Shooting Patterns, Curved Movement with Nodes, Scene Transitions, Saving and Loading, Unity's Scriptable Objects, Coins & Human Rescue, and Medal Achievements – all the features you need to create a game that stands out from the rest.
With our guidance, you'll gain a deeper understanding of Unity's API and how to leverage it to create games that are engaging, fun, and challenging. So why wait? Sign up now and get ready to unleash your creativity and build the game of your dreams!
Note: Basic knowledge of Unity's C# API is recommended.
Who is the target audience?
Game developers who want to expand their skill set and learn how to create a fully functional Shoot Em Up game using Unity.
Programmers who want to improve their knowledge of Unity's C# API and learn how to leverage it to create games.
Designers who want to learn how to bring their game ideas to life using Unity's powerful game engine and tools.
Hobbyists and enthusiasts who are interested in game development and want to learn how to create their own Shoot Em Up games.
Students who are studying game development or computer science and want to gain practical experience in game development using Unity.
What they say about this course:
Jamie Lowe - "Course is mainly for more intermediate/advanced developers but even if you attempt this as a beginner then you will still learn some valuable stuff, reason for my 5 star rating is for the fact Romi is always on hand to help with any problem and most other courses I have taken on Udemy I find it sometimes have to wait a long time for help and that's not good when needing to solve issues, Romi still updates this course to fix any bugs that arise and that is exactly what students need so you are not left with a broken project at the end of the course, I will still be hanging around making adjustments to my project, thank you"
Lance Spence - "I learned a lot from this course and learned new things that I have not seen covered in other Unity courses such as implementing a pooling system, using platform directives and making use of the Gizmos to visualize objects moving along a path. the instructor is knowledgeable and very responsive to students questions. This is one of the primary reasons he has earned a 5 star rating from me. I highly recommend this course if you've ever wanted to learn how to create an awesome SHMUP."