If you’re interested in learning how to make your own third person action combat game, similar to Dark Souls or Assassin’s Creed, then this is the course for you.
Using Unity 2022.1, you'll learn how to create your own 3rd person combat system (similar to that used in games like Dark Souls or Assassin’s Creed). It can easily be added to your RPG project, or any other 3rd person game you’re working on.
You’ll learn about player input, animation state machines, attack combos, dodging, target locking, cinemachine camera options, simple enemy attack AI and more.
If you’re interested in learning how to make your own third person action combat game, similar to Dark Souls or Assassin’s Creed, then this is the course for you.
Using Unity 2022.1, you'll learn how to create your own 3rd person combat system (similar to that used in games like Dark Souls or Assassin’s Creed). It can easily be added to your RPG project, or any other 3rd person game you’re working on.
You’ll learn about player input, animation state machines, attack combos, dodging, target locking, cinemachine camera options, simple enemy attack AI and more.
By the end of the course you’ll have created your very own sandbox arena where you can hack and slash as many enemies as you like, using a 3rd person camera and control system - with either mouse / keyboard or game controller.
This course is aimed at a beginner plus to intermediate level. You'll need a basic understanding of the Unity interface and C# (if you've taken any of our other Unity courses then you should be good to go).
All students have access to the Q&A forums where our Instructors, Teaching Assistants and Community are ready to help answer your questions and cheer on your success.
Ready to create your own combat game? Come join the course now.
In this video (objectives)…
Nathan welcomes you to the course.
In this video (objectives)…
Lucy invites you to join us in our various community support forums in order to ask questions, connect with other students and share your progress.
In this video (objectives)…
Any time we change our project during a lecture we will commit that change to a public source control repository for students to access. In this video we show you how to access that content.
In this video (objectives)…
We create our new project and then download and install the packages that we will be in future lectures.
In this video (objectives)…
Nathan introduces you to the section where you’ll be learning about state machines.
In this video (objectives)…
We look into what a State Machine is and why we should use it to control our player and enemies.
In this video (objectives)…
We start to create our own custom state machine to handle the flow of logic for our player and enemies.
In this video (objectives)…
We learn how we can use inheritance and constructors to share logic between states.
In this video (objectives)…
We create the first implementation of our State Machine for the player character.
In this video (objectives)…
We create an “Input Actions Asset” to set up key bindings for various input methods.
In this video (objectives)…
We create a script to handle reading input so that we can then use that in our states to control the player.
In this video (objectives)…
We subscribe to our input reader events to change state when a button is pressed.
In this video (objectives)…
Nathan introduces you to the section where you’ll be creating basic movement using our state machine.
In this video (objectives)…
We use Mixamo to download a model and basic animations for our character, which we then import into Unity.
In this video (objectives)…
We set up our animations in Unity’s animator state machine which we can then drive from our own custom state machine.
In this video (objectives)…
We create the player’s free look state which handles movement logic for when the player is not locked onto a target and set up the player’s movement input.
In this video (objectives)…
We use Unity’s character controller component to handle our player’s collisions and movement within our world.
In this video (objectives)…
We create a blend tree for our player’s locomotion animations which we can then control from within our states when moving the player.
In this video (objectives)…
We use Unity’s Cinemachine package to set up a 3rd person camera that orbits the player as they move around the scene that we can also control with our mouse and/or gamepad.
In this video (objectives)…
We adjust our movement state logic to move the player relative to the camera’s rotation rather than relative to the world.
In this video (objectives)…
We rename the PlayerTestState to the PlayerFreeLookState and refactor before moving on to the next section.
In this video (objectives)…
We import and use some environment assets such as trees and houses to make the world for our player much more interesting to traverse.
In this video (objectives)…
Nathan introduces you to the section where you’ll be creating melee combat with targeting, dodging, blocking, and more!
In this video (objectives)…
We create the ability to set objects in the world as targets that the player will be able to lock onto.
In this video (objectives)…
We create the PlayerTargetingState that we can enter and exit with different button inputs.
In this video (objectives)…
We select a target when entering the PlayerTargetingState that we can then lock our camera onto as we move around.
In this video (objectives)…
We create a second camera setup that we can switch to when targeting an enemy to position them in the centre of the screen.
In this video (objectives)…
We use Cinemachine’s “State Driven Camera” to switch the active camera whenever the player’s animator changes state.
In this video (objectives)…
Congratulations and what to do next!
In this video (objectives)…
We create the Force Receiver component that will sit on the player and handle calculations related to gravity and knockback.
In this video (objectives)…
We start creating the player’s targeting movement and make sure that the player always faces their target.
In this video (objectives)…
We set up the targeting movement animations in a blend tree and add code to the targeting state that will drive the blend tree.
In this video (objectives)…
We make sure that targets are visible on the screen before locking onto them and will prioritise the closest target to the centre of the screen.
In this video (objectives)…
We fix a couple issues that students may face if they have downloaded their model and animations before a recent change to Mixamo.
In this video (objectives)…
We create the PlayerAttackingState and transition to it with mouse input. We can then transition back when the animation finishes playing.
In this video (objectives)…
We give the make the PlayerAttackingState data driven so that we can reuse it for each of the player’s different attacks.
In this video (objectives)…
We check how far through the attack animation we are to determine when the player can combo into their next attack.
In this video (objectives)…
We create a way to handle external forces being applied to the player so that we can push the player forward whenever they attack.
In this video (objectives)…
We create the Health and WeaponDamage components to be able to deal damage when attacking.
In this video (objectives)…
We refactor and polish a few parts of the attacking related scripts that we have been working on in this section.
In this video (objectives)…
We import an improved version of the environment that Rick has created for us which will allow us to better test our traversal mechanics later in the course.
In this video (objectives)…
Nathan introduces you to the section where you’ll be creating Enemy AI!
In this video (objectives)…
We create a new implementation of the StateMachine class for our enemies.
In this video (objectives)…
We create the first state for our enemies, the EnemyIdleState.
In this video (objectives)…
We set up our enemies to have a detection range and to switch to the chasing state when the player is close.
In this video (objectives)…
We give our enemies a NavMeshAgent component that allows them to move in the world to chase the player.
In this video (objectives)…
We create the EnemyAttackingState to transition to once the enemy has reached our player.
In this video (objectives)…
We give our enemy weapon and set up its collisions and damage.
In this video (objectives)…
We make the both character’s attacks able to apply knockback as well as damage when they hit someone.
In this video (objectives)…
We create impact states for the player and enemies that we switch to when they are hit.
In this video (objectives)…
We finish creating our impact states and hooking them up to the state machines.
In this video (objectives)…
We create the dead states for the player and enemies which will handle disabling various components when they are defeated.
In this video (objectives)…
We set up ragdolls for the character models and then enable them when the characters enter their dead state.
In this video (objectives)…
We create the PlayerBlockingState where the player can use their shield to block incoming attacks.
In this video (objectives)…
We make adjustments to the features that we’ve worked on in this section to improve the feel of the combat.
In this video (objectives)…
Nathan introduces you to the section where you’ll be creating advanced movement for your character such as jumping and climbing!
In this video (objectives)…
We create the ability to dodge whilst locked onto an enemy to be able to avoid attacks.
In this video (objectives)…
We create the PlayerJumpingState and the PlayerFallingState to handle the flow from grounded, to jumping, to falling, to grounded.
In this video (objectives)…
We extract the dodging logic out into its own state as well as implementing animations and invulnerability.
In this video (objectives)…
We set up ledges on the roof of our buildings and allow the player to detect them.
In this video (objectives)…
We give the player the ability to jump to and hang off of the ledges.
In this video (objectives)…
We give the player the ability to climb up when they are hanging onto a ledge.
In this video (objectives)…
We spend some time wrapping up the course by fixing some bugs and polishing some features.
OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.
Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.
Find this site helpful? Tell a friend about us.
We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.
Your purchases help us maintain our catalog and keep our servers humming without ads.
Thank you for supporting OpenCourser.