CS2335
Master 1.0.0
Master 1.0.0
  • Introduction
  • Introduction
    • Introduction
      • Game Design
    • Unity - Download
    • Visual Studio - IDE
    • Unity Manual, Scripting API
  • Unity Basics
    • Unity Editor Windows
    • Behavior Components
    • 2D Project, Scenes
      • Create 2D Sprite GameObject
      • Create UI-Text GameObject
    • MonoBehavior - Base-Class
    • Create a Custom C# Script
  • Game Coding Structures
    • Games Overview
    • Unity Engine - Event Functions
    • Finite State Machines
    • UML Class Diagram
  • Animation
    • Animator Controller
    • Animation Steps
      • Optional: Dead Animation
    • PlayerController.cs V0
  • Project 1 - Player
    • Player GameObject v1
      • C# Generics, Statics
    • Player GameObject - Jump
    • PlayerController.cs V2-Jump
    • PickUp PreFabs
      • Sorting Layers
    • PlayerController.cs V3-Collide
    • GameData Version1
    • GameData Version2
    • PlayerController V4-Score
  • Project 1 Details
    • Project1 GameObjects
    • PlayerStats Version1
      • UI-Canvas
    • Utility Class
    • Simple Spawner
    • MiniGameManager
      • Logic Diagrams
      • StartButton
      • ResultsPanel
  • Project1 Enhancements
    • PickUp - SelfDestruct
    • Spawn from List of Prefabs
  • Project 2 - StateManager
    • Project 2 - Learning Objectives
      • Inspiration
        • Branching Story Structures
        • Branching Structures
        • Hero's Journey
        • Visual Novel in Unity-Links
    • Project 2 - Starter Assets
    • State Machine Framework
    • StateManager - Singleton Design Pattern
    • Interface IStateBase
    • Create SceneXState.cs
    • OptionPanel Prefab
      • UI Images: Sprite Sheets
      • Button Image-Transitions
    • Project 2 - List of Steps
    • Project 2 - Starter Code
  • Project 2 -Dialogue
    • Hide_Show_Panel Script
    • Edit OptionPanel
    • Simple DialogPrefab
    • Conversation Entry
    • SimpleDialog.cs
    • ScriptableObjects
      • Scriptable Object Factory
    • Conversation Scriptable Objects
    • DialogManager_ConvList
      • DialogManager V2
      • Coroutines: Dynamic Text
      • DialogPrefab wImage
  • Overview: Branching Logic
    • DialogTrigger
    • Dictionary Data-Structure
      • Unity PlayerPrefs Dictionary
    • GameData Version3
    • Dictionary: choiceData
      • SaveChoice, ChoicePanel
        • choiceData - examples
          • Dictionary Value to Disable Options
    • Configure UI-Button Listeners
      • NPC Animation
      • NPC Activation
    • UI-Triggered Animations
    • Simple Inventory
    • EndState Conditions
    • Script ExecutionOrder
    • Custom UnityEvents
    • PlayerStats v2
      • ModifyPlayerData
      • BuyItem
    • Text Input
  • UI Components
    • Finding Game Objects
    • Game Objects: UI vs. 2D Sprite
    • UI Elements
      • Canvas: Screen-Space Render-Mode
      • UI-Buttons To Change Scene
  • Proj4: Inventory System
    • Inventory-System
      • GameData version4
      • Install and Configure
      • Diagrams, Resources
        • Item, Gem, Potion Classes
        • Inventory Class
      • InventoryDisplay, Slot UI
        • InventoryDisplay Class
        • Slot Class
        • Hazard Class
        • Layout Groups
      • Customization Steps
        • Configure Animation
        • AddItem Button
        • Concrete Class: Food
        • MiniGame Mods
          • PlayerController Mods
      • Code: InventorySystem
        • GameData, PickUp Mods
      • Resources: Data Structures
  • Custom Unity Events
    • Event Publishing Patterns
    • Custom Event Messaging
  • Proj4: Mini-Game
    • Simplified Mini-Game
      • PlayerController_v2 Mods
        • PlayerController_v2_final
      • MiniGameManager_v2
    • MiniGame-Overview-Proj4
    • LevelManager
      • LevelManager Logic Diagram
      • LevelManager FSM
      • LoadLevel, StartLevel Logic
      • Code Framework
    • Timer
  • Project 4 - Code Mods
    • Project 4 - Steps
    • Project 4 - Code
      • Code: Final Versions
        • PlayerController Mods
          • PlayerController_v2 Mods
        • GameData - Final
        • LevelManager
        • PlayerStats - Final
        • PickUp, Hazard, ScorePickUp
        • Spawner - Final
        • CameraFollow
        • ScreenFader
        • MiniGameState
        • Example: EndState
      • MiniGameWin Logic
  • Optional, Supplemental Content
    • Optional Content
      • Particle Systems
      • Adding Audio
      • Screen Fading and Reloading
      • ScriptableObjects
      • Disable Debug Logging
      • Events and Actions
      • Saving Data - Serialization
      • Parallax Scrolling
      • Change Sprites
    • XR - Extended Reality
  • Computing Concepts
    • Programming Patterns
      • State - FSM
      • Singleton Pattern
    • C# Language
      • Variables
      • Delegates
      • Dictionary
      • Enum
      • Encapsulation
        • C# Properties
        • Access Modifiers
      • Generics < T >
      • Inheritance
      • Interface
      • List< T >
      • Polymorphism
      • Queue< T >
      • Switch-Case
      • Foreach
      • Static
      • Ternary Operator: ?
      • this
    • Diagrams
      • State Machine Framework
      • UML Class Diagrams
      • Level Manager Logic Diagram
      • Flow-Chart: NumberGame
      • FSM: NumberGame
    • Tools
    • Glossary
    • References and Resources
    • Random Thoughts
Powered by GitBook
On this page
  • Create Animator Parameter: HeroState
  • State-Event Transition Table
  • Has Exit Time
  • Idle -> Jump Transition: Has Exit Time - Not Selected
  • Jump - > Idle Transition: Has Exit Time - Selected
  • State - Event Transition Table

Was this helpful?

  1. Animation

Animation Steps

PreviousAnimator ControllerNextOptional: Dead Animation

Last updated 4 years ago

Was this helpful?

To create a 2D animated character, first you need to find a set of sprites that show a character with slight changes in body position.

After downloading the sprite set, determine which animation states your character will use. In this case, we'll implement 4 animation states: idle, walk, jump, dead (If desired, you can implement 3 states: idle, walk, jump)

  • Import sprites associated with desired animation states into your Unity project. Put these in a folder: Sprites/PlayerSprites

  • Select ( shift - to select multiple sprites )

  • Drag the set of sprites into the Scene view, you will be prompted to SaveAs, 'Create a new animation', Name clips: hero_idle, hero_walk, hero_jump

    This creates the following Items:

  • A gameObject in the hierarchy with an attached: Animator Component

  • An Animation clip - in the selected assets folder. This can be viewed/edited in the Animation window when the gameObject is selected

  • An Animator Controller - in the selected assets folder. This can be viewed/edited in the Animator window when the gameObject is selected

  • Play the Unity scene to make sure the created gameObject animation works as expected

  • Repeat steps for each desired Animation State ( idle, walk, jump, dead )

Delete the following:

  • Delete auto-created GameObjects: all except the idle gameObject ( the animation auto-created gameObjects)

  • Rename the remaining gameObject: player

  • Add Tag: player

  • Find the Animator Component on the player gameObject, Identify the Animator Controller (idle) that is on the player gameObject. This one will not be deleted (idle).

  • Delete all other Animator Controller ( walk, jump )

  • Keep all auto-created Animation clips (Don't delete these)

(ignore the hero_dead animation clip) Modify the auto-created idle Animator Controller: Create 3 new Empty States

  • Open the Animator Window - ( menu: window/Animator)

  • With the player gameObject selected, the animator window should display as below.

  • Right-click in the Animator window to Create State > Empty

    Repeat 2 times to create 3 new State nodes Rename States: right-click each state to rename: hero_walk, hero_jump, hero_dead

Configure new States

  • Configure state-nodes as shown in tables below.

    • Each state-node must be assigned an animation clip,

    • Select the state-node in the animator window, then set Motion in the inspector by selecting the corresponding animation clip listed below.

    • Each state-node must have event arrows created and configured to allow transitions between state-nodes

    • Right-click on a state, select: Make Transition, drag to next state node according to the tables below

Create Animator Parameter: HeroState

//Code in PlayerController to set the HeroState parameter in the animator controller.
 animator.SetInteger("HeroState", (int)heroState.idle);

State Configuration:

State

Motion - Animation Clip

Create Transition Arrows

hero_idle

hero_idle animation

hero_idle -> hero_walk

hero_idle

hero_idle animation

hero_idle -> hero_jump

hero_walk

hero_walk animation

hero_walk -> hero_idle

hero_walk

hero_walk animation

hero_walk -> hero_jump

hero_jump

hero_jump animation

hero_jump -> hero_idle

hero_jump

hero_jump animation

hero_jump -> hero_walk

hero-dead*

hero_dead animation

Any State -> hero_dead

*hero-dead is optional

State-Event Transition Table

The table below shows the details for logic that is used to configure the transition arrows between states Each line of the table represents logic for an arrow between the CurState and NextState nodes.

Has Exit Time

The images below show the configuration for arrows between the hero_idle and the hero_jump states. The checkbox Has Exit Time is unchecked for the transition arrow that goes from idle to jump, this means that the jump event can interrupt display of the idle animation clip. When leaving the hero-jump state, the jump animation should not be interrupted, so it can to completion. It is necessary Has Exit Time is not checked for event transitions as listed in the table below. This is necessary so that the keypress-event for triggering the transition into the jump-state to run the jump animation clip.

Idle -> Jump Transition: Has Exit Time - Not Selected

Jump - > Idle Transition: Has Exit Time - Selected

State - Event Transition Table

Current State

Event Condition

Next State

HasExitTime

hero_idle

HeroState == 1

hero_walk

False

hero_idle

HeroState == 2

hero_jump

False

hero_walk

HeroState == 0

hero_idle

False

hero_walk

HeroState == 2

hero_jump

False

hero_jump

HeroState == 0

hero_idle

True

hero_jump

HeroState == 1

hero_walk

True

Animator Component:

Animation clip:

Animator Controller

The image below shows the remaining assets: 4 animation clips and 1 animator controller ( idle )

In the image below, in the left hand panel of the Animator Controller, select the Parameter tab. Select + to add a new int parameter, you will name it HeroState. This is the value that is used to set the logic for transition arrows between states. The is is used in the code to send a signal to the animator controller in the player controller script.

The diagram below shows that 6 transition arrows have been created in the Animator Controller, using the configuration information listed in the table above.

Link to Free - 2D GameArt - Sprites used here